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

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

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


题目描述


0f7fc59b92aa4111ad4a74af3508898e.png

样例输入
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


相关文章
|
4天前
|
算法 Python
Python高级数据结构——并查集(Disjoint Set)
Python高级数据结构——并查集(Disjoint Set)
141 2
|
算法 Python
Python之并查集 洛谷 蓝桥杯
Python之并查集 洛谷 蓝桥杯
206 0
Python之并查集 洛谷 蓝桥杯
|
算法 Python
Python之最小生成树 kruskal
Python之最小生成树 kruskal
98 0
Python之最小生成树 kruskal
|
Python
Python实现并查集
代码如下
73 0
|
Go Python
CSP 201903-2 二十四点 python (python有如神助)
CSP 201903-2 二十四点 python (python有如神助)
CSP 201903-2 二十四点 python (python有如神助)
|
人工智能 Go API
CSP 202104-4 校门外的树 python 动态规划DP + 约数优化
CSP 202104-4 校门外的树 python 动态规划DP + 约数优化
CSP 202104-4 校门外的树 python 动态规划DP + 约数优化
|
Go Python
CSP 202006-2 稀疏矩阵 python 模拟
CSP 202006-2 稀疏矩阵 python 模拟
CSP 202006-2 稀疏矩阵 python 模拟
|
Go Python
CSP 201909-2 小明种苹果(续) python 暴力
CSP 201909-2 小明种苹果(续) python 暴力
CSP 201909-2 小明种苹果(续) python 暴力
|
Go Python
CSP 202112-1 序列查询 python
CSP 202112-1 序列查询 python
CSP 202112-1 序列查询 python
|
测试技术 Go Python
CSP 202009-2 风险人群筛查 python 暴力
CSP 202009-2 风险人群筛查 python 暴力
CSP 202009-2 风险人群筛查 python 暴力