프론트엔드 개발자 중규리 입니다 ദി ᷇ᵕ ᷆ ) 자세히보기

PS/문제풀이

백준 11724 연결 요소의 개수 Python

중규리 2024. 2. 2. 18:23

🐸 문제 정보

 

11724번: 연결 요소의 개수

첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주어

www.acmicpc.net

 

🤖 알고리즘

DFS

 

⏱️ 풀이 시간

07.51m

 

📝 풀이

MST 같아 보이지만 DFS 문제이다.

입력 값을 바탕으로 양방향 그래프를 만들어주고, 방문했는지 체크할 visited도 만든다.

이후 그래프를 돌면서, 연결된 노드는 모두 방문처리하고, 방문하지 않은 노드에서 다시 dfs를 시작할 경우 결과 값에 1 더해준다.

 

🧑‍💻 나의 답

# pypy3

import sys
input = sys.stdin.readline

n, m = list(map(int, input().rstrip().split()))
graph = [[] for _ in range(n + 1)]
visited = [False] * (n + 1)
res = 0

for _ in range(m):
    u, v = list(map(int, input().rstrip().split()))
    graph[u].append(v)
    graph[v].append(u)

def dfs(v):
    visited[v] = True
    for node in graph[v]:
        if not visited[node]:
            dfs(node)

for i in range(1, n + 1):
    if not visited[i]:
        dfs(i)
        res += 1

print(res)