백준 2606 파이썬 바이러스

 

서로 연결되었는지 확인하기 위해

각 번호의 컴퓨터에 연결되어있는 컴퓨터를 나타내는 리스트를 만든다

 

import sys

N = int(sys.stdin.readline())
M = int(sys.stdin.readline())

# 컴퓨터 각각에 연결되어 있는 컴퓨터 번호의 리스트
adj = [[] for _ in range(N + 1)]

# 연결되어있는 정보가 주어지면 각각의 컴퓨터 번호의 리스트에 저장
for i in range(M):
    a, b = map(int, sys.stdin.readline().split())
    adj[a].append(b)
    adj[b].append(a)

for i in range(N+1):
    adj[i].sort()

visited = [0 for _ in range(N + 1)]

stack = [1]

dfs_result = []

while stack:
    current = stack.pop()
    if visited[current] == 0:
        dfs_result.append(current)
        visited[current] = 1
        stack += reversed(adj[current])

print(len(dfs_result)-1)