代码如下
import sys, heapq
input = lambda: sys.stdin.readline().strip()
def find(x, s):
if x != s[x]:
s[x] = find(s[x], s)
return s[x]
def merge(x, y, s):
x = find(x, s)
y = find(y, s)
if x != y:
s[x] = s[y]
def kruskal(edges, s, n):
ans = 0
i = 0
while i < n - 1 and edges:
weight, start, end = heapq.heappop(edges)
if find(start, s) != find(end, s):
merge(start, end, s)
ans += weight
i += 1
print(ans)
n = int(input())
s = [i for i in range(n + 1)]
edges = []
numbers = [None]
for i in range(1, 1 + n):
numbers.extend(list(map(int, input().split())))
for i in range(1, n * n + 1):
x = (i - 1) // n + 1
y = (i - 1) % n + 1
heapq.heappush(edges, (numbers[i], x, y))
kruskal(edges, s, n)
实在是不知道怎么就RE了!!!