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


     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 来存,并且要在里面重载"<",

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

    核心部分如下:

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

  • 相关阅读:
    springboot整合solr,solr设置登录用户密码连接
    病人康复(C++ 滑动窗口)
    C语言函数
    Coding持续集成之自动化部署
    Java 多线程系列(8) —— 线程同步基础
    如何训练ChatGPT以提高其文学创作和创造性写作技能?
    计算机毕业设计ssm餐饮管理系统uto0o系统+程序+源码+lw+远程部署
    关于卡片盒笔记法的研究
    有人物联网模块连接阿里云物联网平台的方法
    第三章 SpringBoot构造流程源码分析
  • 原文地址:https://blog.csdn.net/bei2002315/article/details/126301308