最小生成树
lpls1
这个作者很懒,什么都没留下…
展开
-
最小生成树(prim--让一棵小树长大///kruskal--让许多小树合并)
public static double prim(int n) { for(int i=1;i<=n;i++) { vis[i]=false; mincost[i]=INF; } double ans=0; mincost[1]=0; while(true) { int u=-1; for(int i=1;i<=n;i++) { i...原创 2019-10-11 21:27:01 · 233 阅读 · 0 评论 -
关于最小生成树/次小生成树的相关结论。
1.对于最小生成树的任何一条边e,将它去掉后形成两个集合u和v,则e是u,v两集合间所有边中最小的(假设不是,则可以把e去掉换成一条更小的边,从而形成一棵更小的生成树,矛盾)2.在最小生成树中的第K长边是所有生成树中第K长边的最短边。还不知道如何证明。...原创 2019-10-13 20:56:02 · 541 阅读 · 0 评论 -
kruskal板子及证明
我们先从一个点出发吧。1.对于在连通图中的一个点,所有连接这个点的边中的权值最小边,必定是此图最小生成树中的一条边。证明:比如,这个点是x,x到y的边最小,假设这条边不在最小生成树中,那就有类似x–>a–>y在最小生成树中(因为在生成树中任意两点之间都有通路,且唯一),然而x–>y比x–>a要小,包含x–>a–>y的树不是最小生成树,与题设矛盾。由此得证。...原创 2020-01-16 17:50:42 · 287 阅读 · 0 评论 -
Codeforces Round #597 (Div. 2) D.Shichikuji and Power Grid(虚拟原点在最小生成树中的应用)
题意:n个城市供电,要求每个城市或自己建立发电站,或与建立了发电站的城市直接或间接相连。给出每个点的横纵坐标xi,yi,以及每个点的建站花费和连线参数wi,ci,如果两座城市i、j之间连线,则花费为(ci+cj)*(ij之间的曼哈顿距离)。要求求出最小花费和建站的城市的编号以及连线的城市编号对。我一开始的想法是,先找出建站花费最小的点,建站,然后对所有点跑一遍prim。之后,如果有的点的建站花...原创 2019-11-07 17:24:43 · 134 阅读 · 0 评论