from collections import defaultdict, deque
def solution(n, edge):
answer = 0
visited = [False] * (n + 1)
distance = defaultdict(int)
graph = defaultdict(list)
# 인접 리스트 방식
for node in edge:
graph[node[0]].append(node[1])
graph[node[1]].append(node[0])
q = deque()
q.append(1)
visited[1] = True
distance[1] = 0
while q:
v = q.popleft()
for w in graph[v]:
if not visited[w]:
visited[w] = True
distance[w] = distance[v] + 1
q.append(w)
z = sorted(distance.items(), key=lambda x: -x[1])
for i in z:
if z[0][1] == i[1]:
answer += 1
else:
break
return answer
인접리스트 방식으로 변환하여 문제를 풀었다. DFS로 접근하면 최단거리를 구성하는게 쉽지 않다. BFS를 사용하면 큰 문제없이 풀 수 있다.