알고리즘/백준
[백준] 1717번 집합의 표현 (파이썬)
알감자
2022. 1. 6. 20:14
1717번: 집합의 표현
첫째 줄에 n(1 ≤ n ≤ 1,000,000), m(1 ≤ m ≤ 100,000)이 주어진다. m은 입력으로 주어지는 연산의 개수이다. 다음 m개의 줄에는 각각의 연산이 주어진다. 합집합은 0 a b의 형태로 입력이 주어진다. 이는
www.acmicpc.net
코드
import sys
sys. setrecursionlimit(10**6)
n, m = map(int, sys.stdin.readline().split(" "))
li = [0] * (n+1)
answer_li = []
for i in range(n+1):
li[i] = i
def find(a):
if a == li[a]:
return a
p = find(li[a])
li[a] = p
return p
def union(x,y):
a = find(x)
b = find(y)
if a == b:
return
li[max(a,b)] = min(a,b)
for _ in range(m):
u, a, b = map(int, sys.stdin.readline().split(" "))
if u == 0:
union(a,b)
else:
if find(a) == find(b):
answer_li.append("YES")
else:
answer_li.append("NO")
for i in range(len(answer_li)):
print(answer_li[i])