Maktub_Wiki Maktub_Wiki
主站 (opens new window)
  • 服务搭建
  • 网络服务
  • 开源框架
  • 操作系统
  • iOS/MacOS
  • 算法导论(Python)
  • Leetcode
  • 线性代数
主站 (opens new window)
  • 服务搭建
  • 网络服务
  • 开源框架
  • 操作系统
  • iOS/MacOS
  • 算法导论(Python)
  • Leetcode
  • 线性代数
  • 数据结构

    • 树状数组
    • 位存储
    • 并查集
  • 算法

    • Floyd算法
    • Dijkstra算法
    • Bellman-Ford算法
    • Prim算法
    • Kruskal算法
      • KMP算法
    • Leetcode
    • 算法
    Maktub_小明
    2024-01-09
    目录

    Kruskal算法

    # 说明

    最小生成树算法,获取经过每个点的最小路径

    # 代码模版

    # 并查集模板
    def f(x):
        if p[x] != x:
            p[x] = f(p[x])
        return p[x]
    
    
    def Kruskal():
        cnt = 0
        res = 0
        for x, y, z in g:
            x, y = f(x), f(y)
            if x != y:
                res += z
                cnt += 1  # 一共需要 n - 1 条边
                p[x] = y
        if cnt < n - 1:
            print("impossible")
        else:
            print(res)
    
    
    if __name__ == "__main__":
        n, m = map(int, input().split())
        g = []
        p = [i for i in range(n + 1)]
    
        for i in range(m):
            g.append(list(map(int, input().split())))
        g.sort(key=lambda x: x[-1])
        Kruskal()
    
    上次更新: 2025/03/22, 03:52:10
    Prim算法
    KMP算法

    ← Prim算法 KMP算法→

    Theme by Vdoing | Copyright © 2021-2025 Maktub_小明 | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式