그래프 - 가장 먼 노드(Lv.3)

jisu_log·2025년 8월 9일

알고리즘 문제풀이

목록 보기
79/105


from collections import defaultdict
from collections import deque

def bfs(start, graph, n):
    q = deque()
    visited = set()
    q.append((start, 0))
    visited.add(start)
    
    max_dist = -1
    cnt = 0
    
    while q:
        node, dist = q.popleft()
        
        if max_dist < dist:
            max_dist = dist
            cnt = 1
        elif max_dist == dist:
            cnt += 1
        
        child = graph[node]
        if len(child) > 0:
            for c in child:
                if c not in visited:
                    q.append((c, dist + 1))
                    visited.add(c)

    return cnt

def solution(n, edge):
    answer = 0
    graph = defaultdict(list)
    
    for i in range(len(edge)):
        a, b = edge[i][0], edge[i][1]
        graph[a].append(b)
        graph[b].append(a)
    
    answer = bfs(1, graph, n)
    # 최단 경로로 도착할 때 가장 먼 노드 개수 구하기
    
    
    
    return answer

0개의 댓글