728x90
반응형
문제 출처: https://www.acmicpc.net/problem/11724
풀이:
import sys
sys.setrecursionlimit(10**7)
input = sys.stdin.readline
N, M = map(int,input().split(" "))
board = [[] for _ in range(N+1)]
visited = [False]* ( N + 1 )
for i in range(M):
u, v = map(int,input().split(" "))
board[u].append(v)
board[v].append(u)
def dfs(v):
visited[v] = True
for e in board[v]:
if visited[e] == False:
visited[e] = True
dfs(e)
count = 0
for i in range(1, N+1):
if not visited[i]:
dfs(i)
count += 1
print(count)
처음에는 bfs로 풀다가 중간에서 선이 끊기면 그냥 끝내서 어떻게 해야하는지 고민이 많이 됐다.. 그러다 dfs로 풀기로 마음을 먹었다
거기다 이 문제는 그냥 내면 재귀 에러 나온다
sys.setrecursionlimit(100000)
추가
input = sys.stdin.readline
이것도 추가 해줘야함
반응형
댓글