본문 바로가기
Algorithm

[BaekJoon] 백준 알고리즘 11724번 / 연결 요소의 개수 / DFS / Python

by bkuk 2023. 3. 11.

"""
1. 시나리오
- dfs를 돌면서 빠져나오면 +1을 해준다.

2. 시간 복잡도
- 정점: 1,000개
- 간선: (1,000 x 999) / 2
- 500,500 < 2억개 가능!

3. 자료구조
- [False] * N
- adj[[]] 
"""

import sys
sys.setrecursionlimit(10**6)
input = sys.stdin.readline

def dfs(c):
    if v[c] == True:
        return
    v[c] = True
    for i in adj[c]:
        dfs(i)


N,M = map(int, input().split())
adj = [[] for _ in range(N+1) ]

for _ in range(M):
    s, e = map( int, input().split() )
    # 양방향
    adj[s].append(e)
    adj[e].append(s)

count = 0
v = [False] * ( N + 1 )

for i in range( 1, N + 1 ):
    if v[i] == False:
        dfs(i)
        count += 1

print(count)

댓글