https://www.acmicpc.net/problem/2606
from collections import deque
def bfs(graph):
queue = deque([1])
visited[1]==True
while deque:
v=queue.popleft()
for i in range(len(graph[v])):
if visited[i]==False and graph[v][i]==1:
queue.append(i)
visited[i]=True
if len(queue)==0:
break
def dfs(graph, V, visited):
visited[V]=True
for i in range(len(graph[V])):
if visited[i]==False and graph[V][i]==1:
dfs(graph, i, visited)
N=int(input())
M=int(input())
graph = [[0 for col in range(N+1)] for row in range(N+1)]
for i in range(M):
a, b = map(int, input().split())
graph[a][b]=1
graph[b][a]=1
visited = [False] * (N+1)
visited[0] = True
# bfs(graph)
dfs(graph,1,visited)
print(sum(visited)-2)
n = int(input()) # 컴퓨터의 수
m = int(input()) # 연결된 컴퓨터 쌍의 수
# 인접리스트 graph 선언 및 입력받기
graph = [[] for _ in range(n+1)]
for _ in range(m): # 연결된 컴퓨터 쌍의 수만큼 반복
x, y = map(int, input().split())
graph[x].append(y)
graph[y].append(x)
visited = [0] * (n+1) # 방문처리 : 방문한 컴퓨터 수를 출력해야하므로 visited 에 True/False가 아닌 0/1로 처리
def dfs(graph, v, visited):
visited[v] = 1
for i in graph[v]:
if visited[i] == 0:
dfs(graph, i, visited)
return True
dfs(graph, 1, visited)
print(sum(visited)-1) # 방문한 컴퓨터 개수 - 1번 컴퓨터