https://blog.csdn.net/qq_17550379/article/details/100070671
才知道这道题居然是图论的题
参考了上面大神的他用的是kruskals的方法
class Solution:
def minCostToSupplyWater(self, n: int, wells: List[int], pipes: List[List[int]]) -> int:
for i, v in enumerate(wells):
pipes.append([0, i+1, v])
pipes.sort(key=lambda x:x[2])
parents = [i for i in range(n + 1)]
def find(x):
#如果x=parents[x],代表这个是一个没有链接的根,否则就要找到根
if x != parents[x]:
parents[x] = find(parents[x])
return parents[x]
res, e, k = 0, 0, 0
while e < n:
#那么这里的判断就是我们最后要找的连接数是n-1个连接数和1个根
u, v, w = pipes[k]
k += 1
x, y = find(u), find(v)
if x != y:
e += 1#连接的数量+1
res += w
parents[x] = y#创造一个连接
return res
————————————————
版权声明:本文为CSDN博主「coordinate_blog」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_17550379/article/details/100070671