• 【最小生成树的用法总结】


     PRIME:

     

    1.Q:什么情况下选用prime版本的最小生成树?

        ans: 当题目中输入的是矩阵的时候,选用pirme,而prime代码的核心部分

       迪杰的朴素版本,迪杰的朴素版本就是用邻接矩阵存图的。

    2.Q:题目中提到对称矩阵意味着什么? 

        ans:意味着边是无向边。

    3.Q: prime()算法模板是在迪杰的基础上改了什么?

        ans: ①多了个res=0,统计最小生成树的边数

                ②多了个判定什么情况下最小生成树不连通,也就是无解

                 

                  ③多了个   return res

     KRUSKAL:

    1.Q:什么情况下选用kruskal版本的最小生成树?

        ans:

    1.当题目是要用最小生成树来做,但是并没有说 给出的所有点是联通的,

        这就说明不是 一个整体联通, 而是多个联通块的情况

        对于prime()来说: 

        弊端很明显,它每次都是一个点向与它联通的所有点扩展,

        如果要处理多个联通块的话,就要多次调用 prime()算法。

        对于kruskal()来说:

        多个联通块独立地求最小生成树,一点问题都没有,就是求一个

        “最小生成森林”而已。

    2.当我们不再是求总边权最小的生成树,而是求最大边权最小的生成树。

    (kruskal算法天生自带二分,就不用写二分了)

    acwing1142 繁忙的都市

    3.kruskal天生自带二分,

    acwing 1145北极通讯网络

    首先这题的最终结果不是一整棵树,而是多个联通块,这一点说明了可以用 kruskal算法

    其次这题要用到二分d的最小值,同时d又是联通块中边权的最大值,

    也就是d是最小的最大值,这点与2一样了

    但是本题不会像2.一样0~n-1进行到底,而是会中途break (核心就在于这个break)

    也就是不会形成一个完整最小生成的树

    而是多个联通块。

    这个break保证了  卫星设备k个够用

     2.Q:使用kruskal()算法要注意什么?

          ans:要注意,存边是用struct Node 来存,并且要在里面重载"<",

          因为按照边长从小到大排序

    核心部分如下:

    每次取出一个边,提取出起点和终点

  • 相关阅读:
    【Python3 高级篇】5. subprocess 子进程管理,取代 os.popen()/os.system()
    [附源码]计算机毕业设计JAVA高校创新创业项目管理系统
    Android之WebView的使用与简单浏览器
    01 kafka 记录的存储
    cmake如何将源文件按照指定的组织方式进行分组,在IDE例如vistual stdio或者xcode项目工程文件中展示和管理这些源文件
    python实现命令tree的效果
    (转载)基于遗传算法的多目标优化算法(matlab实现)
    GB28181平台简介
    探索JSX:React中的JavaScript扩展
    Pytorch显示图片
  • 原文地址:https://blog.csdn.net/bei2002315/article/details/126301308