ONE:
题目描述
题意:
求n个顶点间的最小生成树,使整个拓扑路径和最小
用 Prim 模板来写
#include
#include
#include
#include
#include
#include
#include
TWO:
题目描述
题意:
若存在最小生成树则输出最小生成树的值
若不存在输出 ?
思路:
在找最短路径的时候,如果不存在则说明不存在最小生成树
#include
#include
#include
#include
#include
#include
#include
THREE:
题目描述
题意:此时加了一个限制条件,0代表两个村庄之间还没修路,1代表已经修建好了
求全省畅通的最小花费,也就是最小生成树
思路:
肯定要根据修建好了的路来扩建新的最小生成树,因为这个时候已经不需要在花费这个建好的路的钱
用克鲁斯卡尔来做
将有路连接的两个村庄 表示为 连接状态,即表示为父亲儿子状态
然后将所有的路径排序,从小开始判断,如果此条路连接的两个顶点不属于同一个父亲,则代表没有路可连,则加上这条路的花费。否则 knock out
#include
#include
#include
#include
#include
#include
#include
FOUR:
题目描述
题意:
已经建设了某些路程,但还不能使全省畅通,问:若是全省畅通则还需要建造一个道路?
思路:
用克鲁斯卡尔求解
已知初始化的时候其父亲节点等于其本身,在建造最小生成树的时候,父亲节点只有一个根节点
可以根据此性质来求解
当把有道路的村庄连接完之后,则去判断每个顶点的父亲是否是等于自己,记录下 CNT
然后减去一个根节点,得到的结果就是需要建造的道路数目
#include
#include
#include
#include
#include
#include
#include