- Notifications
You must be signed in to change notification settings - Fork 846
/
Copy path1.py
40 lines (33 loc) · 1.12 KB
/
1.py
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
40
# 특정 원소가 속한 집합을 찾기
deffind_parent(parent, x):
# 루트 노드가 아니라면, 루트 노드를 찾을 때까지 재귀적으로 호출
ifparent[x] !=x:
returnfind_parent(parent, parent[x])
returnx
# 두 원소가 속한 집합을 합치기
defunion_parent(parent, a, b):
a=find_parent(parent, a)
b=find_parent(parent, b)
ifa<b:
parent[b] =a
else:
parent[a] =b
# 노드의 개수와 간선(Union 연산)의 개수 입력 받기
v, e=map(int, input().split())
parent= [0] * (v+1) # 부모 테이블 초기화하기
# 부모 테이블상에서, 부모를 자기 자신으로 초기화
foriinrange(1, v+1):
parent[i] =i
# Union 연산을 각각 수행
foriinrange(e):
a, b=map(int, input().split())
union_parent(parent, a, b)
# 각 원소가 속한 집합 출력하기
print('각 원소가 속한 집합: ', end='')
foriinrange(1, v+1):
print(find_parent(parent, i), end=' ')
print()
# 부모 테이블 내용 출력하기
print('부모 테이블: ', end='')
foriinrange(1, v+1):
print(parent[i], end=' ')