DFS로 연결 되있는 것들을 파악하자
- 이차원배열에 연결되어 있는 것들을 넣어준다
- 체크했었는지 visited로 흔적을 남겨놓는다
- visited 하지 않았다면 answer늘리고 visited에 연결요소들 1로 바꾸어준다
몰랐던 점 - sys.setrecursionlimit(10000) -> 재귀 depth가 정해져있으므로 바꾸어 주어야한다
인접행렬 만들때 0,1로 다 채웠었는데 행마다 값을 넣어주는 방법도 있다
import sys
sys.setrecursionlimit(10000)
input = sys.stdin.readline
N, M = map(int, input().split())
matrix = [[]*(N+1) for _ in range(N+1)]
visited = [0]*(N+1)
for _ in range(M):
x, y = map(int, input().split())
matrix[x].append(y)
matrix[y].append(x)
def dfs(n):
visited[n] = 1
for i in matrix[n]:
if visited[i] == 0:
dfs(i)
answer = 0
for i in range(1, N+1):
if visited[i] == 0:
dfs(i)
answer += 1
print(answer)
'개발 > 알고리즘' 카테고리의 다른 글
[백준 1753] 최단경로 (python) (0) | 2021.03.30 |
---|---|
[백준 1918] 후위 표기식 (python) (0) | 2021.03.29 |
[백준 2630] 색종이 만들기 (python) (0) | 2021.03.19 |
[백준 2606] 바이러스 (python) (0) | 2021.03.19 |
[백준 1931] 회의실 배정 (python) (1) | 2021.03.18 |
최근댓글