https://www.acmicpc.net/problem/2606
시간 1초, 메모리 128MB
input :
N (1 <= N <= 100)
연결되어 있는 컴퓨터 쌍의 수 M
연결되어 있는 컴퓨터의 번호 쌍 A, B
output :
1번 컴퓨터를 통해 바이러스에 걸리는 컴퓨터의 '수' 출력.
인접 행렬인가. 리스트인가. 로 연결되어 있는 걸 표시.
1 [2, 5]
2 [3] 등등 해서 BFS를 수행 해서 연결이 되어 있는지 확인을 시키면 되겠다.
visited 에 변화가 생기면 바이러스가 전파 된것.
import sys
from _collections import deque
N = int(sys.stdin.readline())
M = int(sys.stdin.readline())
graph = [[] for _ in range(N + 1)]
visit = [-1] * (N + 1)
for i in range(M):
A, B = map(int, sys.stdin.readline().split())
graph[A].append(B)
graph[B].append(A)
q = deque([1])
visit[1] = 1
cnt = 0
while q:
node = q.popleft()
cnt += 1
for next_node in graph[node]:
if visit[next_node] != 1:
q.append(next_node)
visit[next_node] = 1
print(cnt - 1)
1번으로 인해 바이러스가 퍼진 컴퓨터의 수를 나타내기에 1번을 빼줘야 한다.