문제풀이/백준(Boj) 문제풀이

[백준][DFS] 6118.숨바꼭질 (파이썬/Python)

얄루몬 2021. 12. 21. 14:14

  • 거리가 2인 지점은 4, 5, 6로 가장 먼 거리에서 숫자가 낮은 4가 숨어야하는 지점으로 출력이 되어야 하고,
  • 숨어야 하는 헛간까지의 거리를 출력해야 하고,
  • 그 거리만큼의 다른 지점이 몇개인지를 출력해야 한다.
  • 그리고 가중치가 따로 없기에 다익스트라 말고 BFS로 충분히 풀 수 있는 문제임.
from collections import deque
import sys
input = sys.stdin.readline

def bfs(start):
    q = deque()
    q.append(start)
    dist[start] = 1
    while q:
        x = q.popleft()
        for i in graph[x]:
            if dist[i] == 0:
                dist[i] = dist[x]+1
                q.append(i)

n, m = map(int,input().split())
graph = [[] for _ in range(n+1)] #0노드는 없어서 한 칸 비워두고 만들어준다.
dist = [0]*(n+1)
for i in range(m):
    a,b = map(int,input().split())
    graph[a].append(b)
    graph[b].append(a)

bfs(1)
m = max(dist)
print(dist.index(m),m-1,dist.count(m))