https://www.acmicpc.net/problem/2606
import sys
N = int(sys.stdin.readline())
M = int(sys.stdin.readline())
graph = [[0 for _ in range(N+1)] for _ in range(N+1)]
check = [0] *(N+1)
cnt = 0
def dfs(node):
global cnt
check[node]= True
for i in range(1,N+1):
if graph[node][i] == 1 and check[i]==False:
cnt+=1
dfs(i)
return cnt
for i in range(M):
a, b = map(int, sys.stdin.readline().split())
graph[a][b]=1
graph[b][a]=1
print(dfs(1))
import sys
from collections import deque
n = int(sys.stdin.readline())
m = int(sys.stdin.readline())
graph=[[0 for _ in range(n+1)] for _ in range(n+1)]
check=[False for _ in range(n+1)]
def bfs(x):
cnt=0
q = deque()
check[x]=True
q.append(x)
while q:
tmp =q.popleft()
for i in range(1,n+1):
if graph[tmp][i] ==1 and check[i]==False:
q.append(i)
check[i]=True
cnt+=1
return cnt
if __name__=='__main__':
for _ in range(m):
a,b = map(int, sys.stdin.readline().split())
graph[a][b]=1
graph[b][a]=1
print(bfs(1))
+) 수정 2/9