반응형
문제
https://www.acmicpc.net/problem/1717
유니온 파인드
서로소 집합 그리고 병합 찾기 집합 이라고도 불리며 여러 서로소 집합의 정보를 저장하
고 있는 자료구조를 의미합니다.
아래사이트가 잘 설명되있습니다.
https://twpower.github.io/115-union-find-disjoint-set
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | import sys n,m=map(int,sys.stdin.readline().split()) parents=[i for i in range(n+1)]#먼저 모든 노드의 루트를 자신으로 지정한다. def Find(x):#x로 들어온 원소의 루트노드 반환 if x==parents[x]:#루트와 같다면 반환 return x else:#루트노드 찾아가기 y=Find(parents[x]) parents[x]=y return y def Union(x,y): x=Find(x) y=Find(y) if x!=y:#합쳐준다. parents[y]=x for _ in range(m): command,a,b=map(int,sys.stdin.readline().split()) if command==0:#합친다 Union(a,b) elif command==1:#각 루트 찾아서 비교 a_parents=Find(a) b_parents=Find(b) if a_parents==b_parents:#루트가 같으면 print("YES") else: print("NO") print(parents) | cs |
반응형
'알고리즘(python) > 탐색' 카테고리의 다른 글
[Python]유니온파인드 백준 4195 (0) | 2020.03.23 |
---|---|
[Python]유니온파인드 백준 1976 (1) | 2020.03.22 |
[Python]최단경로 백준 1956 (0) | 2020.02.27 |
[Python]최단경로 백준 10217 (0) | 2020.02.26 |
[Python]최단경로 백준 11404 (0) | 2020.02.23 |
최근댓글