문제
https://www.acmicpc.net/problem/1717
코드
import sys
sys.setrecursionlimit(1000000)
input=sys.stdin.readline
def find(x):
if parent[x]!=x:
parent[x]=find(parent[x])
return parent[x]
def union(b,c):
b=find(b)
c=find(c)
if b<c:
parent[c]=b
else:
parent[b]=c
n,m=map(int, input().split())
parent=[0]*(n+1)
for i in range(n+1):
parent[i]=i
for i in range(m):
a,b,c=map(int, input().split())
if a==0:
union(b,c)
if a==1:
if find(b)==find(c):
print("YES")
else:
print("NO")
생각 정리
기본적인 union-find 문제이다
'문제풀이 > 그래프' 카테고리의 다른 글
[파이썬] [그래프] Pro 방의 개수 (0) | 2022.02.20 |
---|---|
[파이썬] [그래프] Pro 순위 (0) | 2022.02.20 |
[파이썬] [그래프] 백준 2252 줄 세우기 (0) | 2022.02.08 |
[파이썬] [그래프] 백준 1922 네트워크 연결 (0) | 2022.02.07 |
[파이썬] [그래프] union-find, kruskal, topology sort (0) | 2022.02.07 |