- 거리가 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))
'문제풀이 > 백준(Boj) 문제풀이' 카테고리의 다른 글
[백준][DFS/BFS]2644. 촌수계산 (파이썬/Python) (0) | 2021.12.26 |
---|---|
[백준][DFS/BFS] 11725.트리의 부모 찾기 (파이썬/Python) (0) | 2021.12.23 |
[백준][DFS] 10026. 적록색약 (파이썬/Python) (0) | 2021.12.20 |
[백준][Dijkstra/다익스트라] 2206.벽 부수고 이동하기 (파이썬/Python) (0) | 2021.12.17 |
[백준][BFS] 2206.벽 부수고 이동하기 (파이썬/Python) (0) | 2021.12.16 |