BOJ - 6118

주의·2024년 1월 7일
0

boj

목록 보기
53/214

백준 문제 링크
숨바꼭질

❓접근법

  1. BFS를 사용했다.
  2. 방문 처리할 변수 visited와 거리를 저장할 리스트 answer를 만들었다.
  3. bfs 함수 내에서 자식 노드에 처음 방문하면
    방문 처리를 하고, 자식 노드의 거리 = 부모 노드의 거리 + 1 을 넣어준다.
    answer[i] = answer[v] + 1
  4. 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)))

0개의 댓글