문제풀이/백준(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))