ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90

๐Ÿšฉ ๊ทธ๋ž˜ํ”„์ด๋ก , ๊ทธ๋ž˜ํ”„ํƒ์ƒ‰, BFS

 

thinking

๋ฌธ์ œ๋ฅผ ์ฝ์–ด๋ณด๋‹ˆ BFS์—ฌ์„œ BFS๋กœ ํ’€์—ˆ๋‹ค.

์ธ์ ‘๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด์ค€ ํ›„, 1๋ฒˆ๋ถ€ํ„ฐ ์ˆœํšŒํ•˜๋ฉด์„œ ์ผ€๋นˆ๋ฒ ์ด์ปจ์ˆ˜๋ฅผ ์นด์šดํŒ…ํ•œ ํ›„ ๋ฆฌ์ŠคํŠธ์— ๋„ฃ๊ณ 

๊ทธ ๋ฆฌ์ŠคํŠธ์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ์ถœ๋ ฅํ–ˆ๋‹ค.

 

์ฝ”๋“œ

from collections import deque

def BFS(i):
    visited = [0] * (N+1)
    queue.append(i)
    visited[i] = 1
    while queue:
        t = queue.popleft()
        for v in edge_list[t]:
            if not visited[v]:
                visited[v] = visited[t]+1
                queue.append(v)
    return sum(visited)


N, M = map(int, input().split())  # N:์œ ์ €์˜ ์ˆ˜, M: ์นœ๊ตฌ๊ด€๊ณ„ ์ˆ˜
edge_list = [[] for _ in range(N+1)]
for _ in range(M):
    s, e = map(int, input().split())
    edge_list[s].append(e)
    edge_list[e].append(s)

queue = deque()
res = []
for i in range(1, N+1):
    res.append(BFS(i))

print(res.index(min(res))+1)

 

๋Œ“๊ธ€