-
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])
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 15681번 트리와 쿼리 (파이썬) (0) 2022.01.06 [백준] 9372번 상근이의 여행 (파이썬) (0) 2022.01.06 [백준] 4803번 트리 (파이썬) (0) 2022.01.05 [백준] 5639번 이진 검색 트리 (파이썬) (0) 2022.01.05 [백준] 2263번 트리의 순회 (파이썬) (0) 2022.01.05