바이트 댄스

3438 단어 필기시험 문제
제목 설명
모든 틱 톡 인 플 루 언 서 를 찾 아야 하 며, 이용자 수 는 N 이 며, 관심 관 계 는 M 쌍 이다.(A, B) 대표 A 는 B 에 주목 했다.관심 관 계 는 전달 관 계 를 가진다. 예 를 들 어 (A, B) (B, C) 가 있 으 면 A 가 간접 적 으로 C 를 주목 했다 고 생각한다.만약 한 사용자 가 모든 N 명의 사용자 에 게 직간 접적 으로 주 목 받 게 된다 면, 우 리 는 이 사용자 가 바로 틱 톡 인 플 루 언 서 라 고 생각한다.틱 톡 인 플 루 언 서 총수 구하 기.입력: * * 첫 번 째 줄, 정수 N 두 번 째 줄, 정수 M 세 번 째 줄, M * 2 개의 정수 로 M 개의 관심 관계 출력 을 대표 합 니 다. 정수 샘플 입력: 3, 1, 2, 1, 2, 3 개의 출력: 1 알림: 3 명의 사용자 만 있 고 직접 팬 2, 간접 팬 1 이 있 기 때문에 3 명의 사용 자 는 유일한 틱 톡 홍 인 입 니 다.
사고의 방향
데 이 터 는 방향 이 있 는 그림 입 니 다. (A, B) 는 A 가 B 를 주목 하 는 것 을 대표 합 니 다. 그러면 이 관 계 는 그림 에서 B 가 A 를 가리 킵 니 다.전체 그림 이 연결 되 지 않 을 수도 있다 는 것 을 고려 하려 면 각 노드 를 깊이 있 게 옮 겨 다 녀 야 한다.각 노드 를 깊이 있 게 옮 겨 다 니 기: 호출 할 때마다 이 노드 의 팬 수 를 1 로 추가 합 니 다. 재 귀 함수 호출 에 있어 visited 배열 을 만들어 야 합 니 다. 노드 를 대표 하여 방문 한 적 이 있 고 방문 한 것 은 옮 겨 다 닐 수 없습니다.매번 깊이 가 시작 되 기 전에 visited 를 비우 고 visited [출발점] = True 를 사용 하면 출발점 이 지 났 음 을 의미 합 니 다.
코드
from collections import defaultdict
#     ,      
##n = eval(input())
##m = eval(input())
##li = list( map(int,input().split()))

#     ,      
n = 3
m = 3
li = [1,2,2,1,2,3]

#     ,     1  ,   0  
son = defaultdict(list)
fans = [1]*n#        ,         ,     1
visited = [False]*n

def findson(origi,i):#origi    
    for j in son[i]:        
        if visited[j] != True:            
            fans[origi] += 1
            visited[j] = True
            #print(i,j,visited)
            findson(origi,j)

for i in range(m):
    a = i*2
    b = i*2 +1
    #a  b
    son[li[b]-1].append(li[a]-1)
    #    123,       012
#       

for i in range(n):
    visited = [False]*n
    visited[i] =True 
    findson(i,i)

count = 0
for i in fans:
    if(i == n):#     n
        count +=1
print(count)

좋은 웹페이지 즐겨찾기