CSP 201703-4 地铁修建 python 最小生成树,并查集

Posted 风信子的猫Redamancy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSP 201703-4 地铁修建 python 最小生成树,并查集相关的知识,希望对你有一定的参考价值。

CSP 201703-4 地铁修建 python 最小生成树,并查集

题目描述

样例输入
6 6
1 2 4
2 3 4
3 6 7
1 4 2
4 5 5
5 6 6

样例输出
6

思路

  • 由于所有的隧道同时开始修建,则当需要花费时间最长的隧道的时间值最小时,即为修建整条地铁线路最少的时间。

  • 采用最小生成树思想,运用Kruskal算法即可求解。

  • 采用并查集思想,当第一个点和最后一个点在同一个集合时,表明此时隧道已经修建 完毕,输出最后完成的隧道所需天数即可。

代码

# http://118.190.20.162/view.page?gpid=T54
# 并查集 + Kruskal算法

n,m = map(int,input().split())

w = []
for i in range(m):
    a,b,c = map(int,input().split())
    w.append((a,b,c))

f = [i for i in range(n+1)]

def get_father(x):
    if f[x] != x:
        f[x] = get_father(f[x])
    return f[x]

def union(x,y):
    fx,fy = get_father(x),get_father(y)
    if fx != fy:
        f[fy] = fx

# 排序
w.sort(key = lambda x:x[2])

# 构建最小生成树0
for i in w:
    u,v,w = i
    if get_father(u) != get_father(v):
        union(u,v)
        if get_father(1) == get_father(n):
            print(w)
            break

以上是关于CSP 201703-4 地铁修建 python 最小生成树,并查集的主要内容,如果未能解决你的问题,请参考以下文章

CCF-CSP-201703-4-地铁修建

CCF-CSP题解 201703-4 地铁修建

CSP 地铁修建 最小生成树+并查集

201703-4 地铁修建

ccf-201703-4-地铁修建

CCF201703-4 地铁修建(100分)Kruskal算法+BFS+最短路