서로 연결되었는지 확인하기 위해
각 번호의 컴퓨터에 연결되어있는 컴퓨터를 나타내는 리스트를 만든다
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)
'공부하자! > 알고리즘' 카테고리의 다른 글
백준 2941 파이썬 크로아티아 알파벳 (0) | 2021.05.20 |
---|---|
백준 5622 파이썬 다이얼 (0) | 2021.05.20 |
백준 1021 파이썬 회전하는 큐 (0) | 2021.05.14 |
백준 17298 파이썬 오큰수 (0) | 2021.05.12 |
백준 10250 ACM 호텔 (0) | 2021.03.12 |