practivceAlgorithm/백준
[백준][Python] 17352 여러분의 다리가 되어 드리겠습니다.
findTheValue
2021. 9. 29. 23:50
신장트리에서 마지막 하나의 간선을 그리는 방법으로 트리간 가중치가 존재하지 않기 때문에
간단한 union-find로 풀 수 있다.
import sys
input = sys.stdin.readline
def find(x):
if parent[x] == x:
return x
parent[x] = find(parent[x])
return parent[x]
def union(a, b):
a = find(a)
b = find(b)
if a < b:
a, b = b, a
parent[b] = a
N = int(input())
parent = {i: i for i in range(1, N+1)}
for _ in range(N-2):
a, b = map(int, input().split())
union(a, b)
pivot = find(1)
for i in range(2, N+1):
if pivot != find(i):
print(pivot, i)
exit()