예제의 그래프를 표현하면 아래 그림과 같고, 1번 노드에서 가장 멀리 떨어진 노드는 4,5,6번 노드입니다.
<풀이법>
▒ 한줄 개념: BFS ▒
BFS를 이용하면 쉽게 풀 수 있습니다.
다만, matrix를 이용하여 구현하려고 하면 시간 초과가 발생합니다.
따라서, 딕셔너리를 이용하여 BFS를 구현한다면, 쉽게 해결할 수 있습니다.
<코드(Python)>
def solution(n, edge):
dic = {}
visited = [True] + [False for i in range(1,n)]
distance = [0 for i in range(n)]
for e in edge: # 초기화
if (e[0] - 1) in dic:
dic[e[0] - 1] += [e[1]-1]
else:
dic[e[0] - 1] = [e[1]-1]
if (e[1] - 1) in dic:
dic[e[1] - 1] += [e[0]-1]
else:
dic[e[1] - 1] = [e[0]-1]
queue = [(0, 0)]
while len(queue) != 0: # BFS
dist, num = queue.pop(0)
if distance[num] < dist:
distance[num] = dist
for i in dic[num]:
if not visited[i]:
queue += [(dist + 1, i)]
visited[i] = True
return distance.count(max(distance))