![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
最小生成树
Eirlys_North
这个作者很懒,什么都没留下…
展开
-
noip2013货车运输 最大生成树+LCA 【pascal】
裸的最大生成树+LCA=。=,两个模板一下就好=w=type rec=record ll,rr,len:longint;end;var n,m,l :longint; i,j :longint; a :array[0..50010] of rec原创 2016-11-15 07:23:40 · 476 阅读 · 0 评论 -
bzoj 1016 kruscal+乘法原理
题意:求n个点、m条边的不同的最小生成树的方案数每种边权的边数量固定、作用固定先做一遍最小生成树,求出每种边权在最小生成树中的数量num[i]再从小到大对每种边权进行dfs,求出对于第i种边权,有多少种满足num[i]的取法根据乘法原理乘上即可对于已经处理完的第i种边权,把该种边权所有的边能加到最小生成树的就加进去,再进行下一种边权的判断注意并查集不要用路径压缩,不然不方便原创 2017-05-02 15:50:03 · 547 阅读 · 1 评论 -
bzoj 2594 LCT+离线处理+Kruscal
题意:给定n个点、m条边的无向图,支持两种操作:(1)删去一条边 (2)询问当前图中(当前存在的边)最小生成树上的最大边权动态维护最小生成树如果暴力LCT套Krusacal,简直可以直接T到下辈子了..考虑删边离线,倒着做就变成了添边先求出删去所有需要删去的边后的的最小生成树,倒着加边,每加一条边判断是否与当前最小生成树形成环,如果没有就直接加入,如果有考虑是否需要更新最小生成原创 2017-04-18 21:25:02 · 479 阅读 · 0 评论 -
bzoj 1232 最小生成树
题意:n个点m条双向边,要求去掉一些边仅保留(n-1)条边,每个点有各自的点权,每条边有各自的边权,要求从一个点出发遍历每一个点再回到起点,每经过一次点i,代价就加上一次该点点权,每经过一次边j,代价就加上一次该边的边权。求最小的代价每一条边对答案的贡献 = 该边的边权*2 + 两端点点权以此作为它的边权跑最小生成树然后我们会发现,作为起点的点又额外加了一次,而对于我们求出的最小生成原创 2017-03-13 21:37:27 · 482 阅读 · 0 评论 -
bzoj 3624 贪心+Kruscal(并查集)
题意:n个点,m条无向边。共有两类边,分别是0类边和1类边,要求找出一棵最小生成树满足其中0类边恰好有K条,如果无解输出“no solution”实际上就是一道经典的特殊的MST跑两边Kruscal第一遍:优先选择1类边,即在保证是树的前提下,能用1类边就用1类边,然后剩下的用0类边补全,则这些0类边是必须要选的,如果必选的0类边的数量大于K,则无解第二遍:先加入上一次必须要选的0原创 2017-03-13 18:48:24 · 484 阅读 · 0 评论 -
bzoj 1626[Usaco2007 Dec]Building Roads 修建道路
题意:n个点,m条已有的边,建一些新边,代价为两点间的欧几里得距离,使得n个点联通,求最少的代价...高仿kruscal..先把已经连上的连上,然后再把没有连上的边从小到大排序,按kruscal的套路去跑就行了(详见代码)注意:再求欧几里得距离的时候,由于x和y的范围为10^6,会爆int,要强转long long(int64)type rec=record原创 2017-03-09 16:00:52 · 414 阅读 · 0 评论 -
bzoj 1601 最小生成树经典题
题意:n块农田,全部灌水。有两种方式:(1)在第n块天上花费wi建造一个水库(2)从另一块田j花费Pij引水,求最小花费MST好题如果没有可以建造水库的条件,那么就是一个最小生成树,没毛病╮(╯_╰)╭然而加上这个条件以后,相当于可以自己向自己引水花费为wi加一个超级源点,并向n个点连边为wi,然后对这n+1个点跑最小生成树即可编程难度为0,但是想到超级源点的难度还是不小的,超原创 2017-03-04 23:48:05 · 1132 阅读 · 0 评论 -
bzoj 2561 最小割
题意:给定一个n个点m个无向联通图,再给出一条边,最少删除多少条边使得这条边既出现在最小生成树上又出现在最大生成树上...说实话,这数据范围有点吓人,瞬间不知所措...._(:3 」∠)_.对于某一条边,如果边权小于它的边能使其两个端点连通,则这条边一定不会出现在最小生成树中。对于某一条边,如果边权大于它的边能使其两个端点连通,则这条边一定不会出现在最大生成树中。所以,原题原创 2017-03-03 19:59:03 · 315 阅读 · 0 评论 -
bzoj 1050/ codevs 1001 贪心(伪Kruscal)
题意:一个n个顶点,m条边的无向图,每条边有一个权值vi,给出两个顶点S和T,找出一条S到T的路径使最大边与最小边的比最小。如果S到T没有路径输出:"IMPOSSIBLE" 否则输出最简比值对于 impossible /是否合法判断 :并查集维护连通性,判断S和T是否在一个集合里重点考虑要求:最大边与最小边的比最小,那么一定是 让最大边尽量小的同时让最小边尽量大我们尝试按照一定顺序去原创 2017-01-26 15:24:40 · 418 阅读 · 0 评论 -
一些最小生成树的性质
1、换掉一条边并且保证结果是树记为一次操作,树A和B是无向图的两个生成树,则A可以通过若干次操作变成B。 证:把树看作边的集合,如果B中有一条A没有的边,则把这条边加到A上,A产生一个圈中至少有一条是B中没有的边,把这条边删掉,则A仍然是生成树,也就是说,我们可以随便加一条B有而A没有的边,总可以找到一条合适的边删掉。A,B集合相同的边多了一条,重复这个过程直到A=B它告诉我们任何原创 2016-12-16 11:26:24 · 1540 阅读 · 0 评论 -
bzoj 3943 最大生成树
题意:给定n个数,每次任选两个数,将这两个数的xor累加到ans里并删除其中一个数,重复操作直到只剩一个数,求ans的最大值...一开始sb的写了个暴力贪心,在改了1h对拍后才发现naive的贪错了...于是果断放弃挣扎如果把比赛的两个人之间连边的话,n-1次操作后就会得到一棵树,实质上一棵树就对应着一种比赛的安排方案那么这题实际上就是求n*(n-1)边、n个点的最大生成树,边权为原创 2017-05-04 09:40:54 · 597 阅读 · 0 评论