문제
me
import sys
input = sys.stdin.readline
c=int(input())
n=int(input())
edge={}
for i in range(1,c+1):
edge[i]=[]
for _ in range(n):
i,j=map(int,input().split())
edge[i].append(j)
edge[j].append(i)
def dfs():
need=[1]
visit=[1]
cnt=-1
while need:
now=need.pop(0)
cnt+=1
for e in edge[now]:
if e not in visit:
need.append(e)
visit.append(e)
return cnt
print(dfs())
solution
n = int(input())
m = int(input())
graph = [[]*n for _ in range(n+1)]
for _ in range(m):
a,b = map(int,input().split())
graph[a].append(b)
graph[b].append(a)
cnt = 0
visited = [0]*(n+1)
def dfs(start):
global cnt
visited[start] = 1
for i in graph[start]:
if visited[i]==0:
dfs(i)
cnt +=1
dfs(1)
print(cnt)
출처
n = int(input())
t = int(input())
s = [[0] * n for i in range(n)]
visit = [0 for i in range(n)]
for i in range(t):
a, b = map(int, input().split())
s[a - 1][b - 1] = 1
s[b - 1][a - 1] = 1
def dfs(v):
visit[v] = 1
for i in range(n):
if s[v][i] == 1 and visit[i] == 0:
dfs(i)
dfs(0)
cnt = 0
for i in range(1, n):
if visit[i] == 1:
cnt += 1
print(cnt)
출처