-문제: https://www.acmicpc.net/problem/1325

 

1325번: 효율적인 해킹

첫째 줄에, N과 M이 들어온다. N은 10,000보다 작거나 같은 자연수, M은 100,000보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에 신뢰하는 관계가 A B와 같은 형식으로 들어오며, "A가 B를 신뢰한

www.acmicpc.net

 

어려운 문제는 아니었는데 각 루트 노드에서 시작하기 때문에 visit를 하면 안된다고 생각했지만 하나의 루트 당 이전에 들린 노드는 표시를 해야하므로 bfs단위로 visit를 설정해야한다는 것을 배웠다 

 

그리고 블로그 따라서 똑같이 했는데 자꾸 typeerror, indexerror가 난다.,, 짜증

 

-정답풀이:

from collections import deque
import sys
input = sys.stdin.readline

def bfs(start):
    q = deque()
    q.append(start)
    visit = [0 for _ in range(n + 1)]
    visit[start] = 1
    cnt = 1
    while q:
        st = q.popleft()
        for i in s[st]:
            if visit[i] == 0:
                visit[i] = 1
                cnt += 1
                q.append(i)
    return cnt
    
n, m = map(int, input().split())
s = [[] for i in range(n + 1)]
for i in range(m):
    a, b = map(int, input().split())
    s[b].append(a)
    
result = []
max_cnt = 0
for i in range(1, n + 1):
    tmp = bfs(i)
    if max_cnt == tmp:
        result.append(i)
    if max_cnt < tmp:
        max_cnt = tmp
        result = []
        result.append(i)
        
print(*result)

'백준 > Search' 카테고리의 다른 글

[백준/bfs] 3184번: 양  (0) 2022.03.04
[백준/dfs] 13023번: ABCDE  (0) 2022.03.03
[백준/bfs] 2251번: 물통  (0) 2022.03.02
[백준/bfs] 1926번: 그림(ValueError 해결하기)  (0) 2022.03.02
[백준/bfs] 2638번: 치즈(다시)  (0) 2022.02.28

+ Recent posts