Machineboy空
백준 11724: 연결 요소의 개수 구하기 - DFS(깊이우선탐색) 본문

import sys
sys.setrecursionlimit(10000)
input = sys.stdin.readline
n,m = map(int, input().split())
#_를 쓰는 이유: i에 관해 반복한다? 할 때 그 인덱스의 의미가 없고, 반복 횟수 만이 의미가 있을 때
A = [[] for _ in range(n+1)] #N개의 노드만큼의 인접 리스트를 만들어 둔다.
visited = [False] * (n+1) #방문리스트 n개 또한 만들어 둔다.
def DFS(v): # DFS(깊이우선탐색) 함수 정의
visited[v] = True # 방문리스트 값이 True면 반환, False면 DFS 재귀함수 호출
for i in A[v]:
if not visited[i]:
DFS(i)
for _ in range(m):
s,e = map(int, input().split()) # m개의 양 끝점을 읽는다.
A[s].append(e) # 인접리스트의 s번째 칸에 연결된 것들 넣어준다.
A[e].append(s) # 방향이 상관없으므로 e칸에도 넣어준다.
count = 0
for i in range(1, n+1): # DFS가 한 번 끝날 때 마다 연결요소 개수 1 증가
if not visited[i]:
count += 1
DFS(i)
print(count)
'Computer > Coding Test' 카테고리의 다른 글
백준 11047: 동전 0 - 그리디 알고리즘 (0) | 2023.12.19 |
---|---|
1260번: DFS와 BFS (0) | 2023.12.19 |
백준 2164번: 카드2 - Queue (0) | 2023.10.21 |
백준 2750번: 수 정렬하기 - 버블 정렬 (0) | 2023.10.19 |
백준 11286번: 절댓값 힙 구현하기 - Priority Queue, Heap (0) | 2023.10.18 |