백준_실버3_2606번(바이러스)

조건웅·2022년 11월 9일

이번 문제는 간단하게 BFS 혹은 DFS를 적용하는 문제이다. 시작 노드는 정해져 있고 이 노드와 연결된 다른 노드들의 수를 count하기만 되고 BFS를 사용하여 무슨 노드를 방문했는지 아래의 코드와 같이 찍고 방문한 노드들의 개수를 리턴해주면 되는데 시작 노드는 count하지 않음으로 방문한 노드들의 개수에 1를 빼고 출력하였다.

from collections import deque
def bfs(graph,start_node,n):
    need_visited,visited = deque([start_node]),deque()
    while need_visited:
        now_node = need_visited.popleft()
        if now_node not in visited:
            visited.append(now_node)
            need_visited.extend(graph[now_node])

    return len(visited) - 1
    
n = int(input())
edge = int(input())
graph = {x:[] for x in range(1,n+1)}
for i in range(edge):
    start_node,end_node = map(int,input().split())
    graph[end_node].append(start_node)
    graph[start_node].append(end_node)

print(bfs(graph,1,n))
profile
내게 남은 소중한 자식은 누군지 아나? 쑨양이다!

0개의 댓글