알고리즘 문제풀이
도로 (백준 9344)
wiojfe
2023. 8. 14. 15:25
MST를 형성하면 되는데 특정 간선이 MST 형성에 필요한 지 확인만 해보는 문제이다.
크루스칼로 간선들을 확인하면서 미리 입력 받았던 간선이 쓰이는 지 체크한다.
import sys
import heapq
input = sys.stdin.readline
test = int(input())
def find(a):
if a != parent[a]:
parent[a] = find(parent[a])
return parent[a]
def union(a,b):
a =find(a)
b =find(b)
if a <b :
parent[b] = a
else :
parent[a]= b
for _ in range(test):
n,m,p,q =map(int, input().split())
parent =[k for k in range(n+1)]
qq= []
ans =0
flag = 0
heapq.heapify(qq)
for i in range(m):
a,b,c =map(int, input().split())
heapq.heappush(qq, (c,a,b))
for i in range(m):
cost ,x,y= heapq.heappop(qq)
if find(x)!= find(y):
ans += cost
union(x,y)
if (x,y) == (p,q) or( x,y) == (p,q) :
print("YES")
flag = 1
if flag ==0 :
print("NO")