[백준 2606] 바이러스

Junyoung Park·2022년 2월 24일
0

코딩테스트

목록 보기
70/631
post-thumbnail

1. 문제 설명

바이러스

2. 문제 분석

DFS/BFS를 사용해 1번 노드와 연결된 모든 노드의 개수를 구한다.

  1. 시작 노드 (1번 노드)와 양방향 그래프가 주어진다.
  2. 각 노드 별로 인접한 노드 리스트를 구한다.
  3. 시작 노드 1번부터 방문할 수 있는 노드 개수를 카운트한다.

3. 나의 풀이

n = int(input())
edges_num = int(input())
nodes = [[] for _ in range(n+1)]
for _ in range(edges_num):
    tail, head = map(int, input().split())
    nodes[tail].append(head)
    nodes[head].append(tail)
    # 각 노드 별 인접 노드 리스트
visited = [False]*(n+1)
queue = [1]
# 1번 노드 시작
cnt = 0
# BFS -> 1번에서 방문 가능한 모든 노드 개수 카운트
while queue:
    cur_node = queue.pop(0)
    visited[cur_node] = True
    cnt += 1
    for next_node in nodes[cur_node]:
        if not visited[next_node]:
            visited[next_node] = True
            queue.append(next_node)
print(cnt-1)

profile
JUST DO IT

0개의 댓글