백준 문제 링크
숨바꼭질
- BFS를 사용했다.
- 방문 처리할 변수 visited와 거리를 저장할 리스트 answer를 만들었다.
- bfs 함수 내에서 자식 노드에 처음 방문하면
방문 처리를 하고, 자식 노드의 거리 = 부모 노드의 거리 + 1 을 넣어준다.
answer[i] = answer[v] + 1- 1번 헛간부터 찾으므로 bfs(1)을 실행시켜서
문제에서 요구하는 3가지를 answer에서 찾으면 끝!
from collections import deque
N,M = map(int, input().split())
graph = [[] for _ in range(N+1)]
for _ in range(M):
x,y = map(int, input().split())
graph[x].append(y)
graph[y].append(x)
visited = [False] * (N+1)
answer = [0] * (N+1)
def bfs(x):
queue = deque()
queue.append(x)
visited[x] = True
while queue:
v = queue.popleft()
for i in graph[v]:
if not visited[i]:
visited[i] = True
answer[i] = answer[v] + 1
queue.append(i)
bfs(1)
print(answer.index(max(answer)), max(answer) , answer.count(max(answer)))