알고리즘 문제풀이
Traveling SCCC President (백준 28119)
wiojfe
2023. 9. 4. 14:57
문제의 조건이 일반적인 MST보다 많다고 보기 쉽지만 그냥 MST를 만들면 된다.
또한, 반복문의 깊이 범위를 더 늘려야 정답이 된다.
import sys
sys.setrecursionlimit(10000)
input = sys.stdin.readline
n,m,s = map(int, input().split())
edges =[]
for i in range(m):
a,b,c = map(int, input().split())
edges.append((c,a,b))
edges.sort()
order = list(map(int, input().split()))
parent = [i for i in range(n+1)]
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
ans = 0
for i in range(len(edges)):
cost,x,y = edges[i]
# print(parent)
if find(x)== find(y):
continue
else :
union(x,y)
ans += cost
print(ans)
# print(parent)