알고리즘

[백준, 11724번] 연결 요소의 개수

hminor 2023. 8. 15. 11:04

풀이 방식

  • 방향이 없는 그래프기에 노드간 연결을 서로 해주는 형식으로 했고
  • 노드 수 만큼 반복문을 돌려서 방문하지 않았다면 해당 값에 대한 _dic의 값을 q에 넣고 돌리기
  • 이후 방문하지 않은 노드들은 i의 값을 visit에 넣어 방문 표시하기
  • 이후 visit의 중복을 줄이고 0번째 노드는 없으니 -1 해서 푼 풀이
  • 조금 시간이 상대적으로 나오긴하지만.. ㅎ 
import sys
from collections import deque

input = sys.stdin.readline
n,m = map(int,input().split())
_dic = {i:[] for i in range(1,n+1)}
visit = [0]*(n+1)

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

for i in range(1,n+1):
    if visit[i]: continue
    visit[i] = i
    q = deque(_dic[i])

    while q:
        num = q.popleft()
        visit[num] = i
        for j in _dic[num]:
            if visit[j]: continue
            visit[j] = i
            q.append(j)
print(len(set(visit))-1)
 

'알고리즘' 카테고리의 다른 글

[백준, 4963번] 섬의 개수  (0) 2023.08.20
[백준, 1325번] 효율적인 해킹  (0) 2023.08.18
[백준, 1697번] 숨바꼭질  (0) 2023.08.15
[백준, 7576번] 토마토  (0) 2023.08.14
[백준, 2667번] 단지번호붙이기  (0) 2023.08.14