반응형
풀이 방식
- 방향이 없는 그래프기에 노드간 연결을 서로 해주는 형식으로 했고
- 노드 수 만큼 반복문을 돌려서 방문하지 않았다면 해당 값에 대한 _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 |