Kruskal
文章平均质量分 53
cyl纤云弄巧
To Be
展开
-
POJ 1861
/* 总结一下kruskal算法。1.新建图G,G中拥有原图中相同的节点,但没有边 2.将原图中所有的边按权值从小到大排序 3.从权值最小的边开始,如果这条边连接的两个节点于图G中不在同一个连通分量中(使用了并查集),则添加这条边到图G中 同时可以记录路径record 4.重复3,直至图G中所有的节点都在同一个连通分量中收获,思路很清晰,需要很小心的写 */#include<ios原创 2016-10-23 12:06:17 · 249 阅读 · 0 评论 -
POJ 2377(kruskal)
题意:Bessie为别人工作,链接所有的草垛,每条路需要花费一定数目,但是老板并不想给钱,Bessie很生气,想以最大花费情况结束工作。 所以请帮她找到最大生成树。 用kruskal能解决很多问题,这次可以变形即可。 #include #include #include #define M 20010 using namespace std; class kru原创 2016-10-24 19:16:21 · 326 阅读 · 0 评论 -
POJ 2395
简单题,很纯粹的最小生成树。 #include #include #include using namespace std; class kruskal { public: int a,b,t; }edge[10010]; int n,m; int Max; int f[2010],num[2010]; bool cmp(kruskal x,kruskal y) {原创 2016-10-24 19:19:43 · 307 阅读 · 0 评论 -
POJ 1679 (次小生成树)
我们都知道最小生成树,那么次小生成树就是:T0是任一棵异于T的生成树,通过变换T0 --> T1 --> T2 --> ... --> Tn (T) 变成最小生成树。所谓的变换是,每次把Ti中的某条边换成T中的一条边, 而且树T(i+1)的权小于等于Ti的权。取T0为任一棵次小生成树,T(n-1) 也就是次小生成树且跟T差一条边。 此博客有详解:http://www.cnblogs原创 2016-10-25 19:43:36 · 308 阅读 · 0 评论 -
POJ 2784 && UVA1151
注意:POJ和UVA输入方式不同,修改一下就行。 /* 题意:有n个点,现在需要联通所有,有q种套餐可以选择, 当然套餐之外也可以自己添加边,意为达到最短距离。 题意很明显,不知道需要使用哪一种套餐, 那么需要枚举每一种套餐的情况。 然后再进行对比。 注意最开始没有套餐的情况。 */ #include #include #in原创 2016-11-13 10:40:17 · 352 阅读 · 0 评论 -
POJ3723(kruskal 求出最大权森林)
题意:有n个女兵m个男兵,如果他们之间认识,那么征兵的时候可以省钱,省得数目是10000-他和她的亲密度。 思路:有个思想是把权值取反,最终再加上原本的权值。 #include #include #include using namespace std; const int Nmax = 50005; class Node { public: int s,e,v; }原创 2016-11-24 18:01:59 · 337 阅读 · 0 评论 -
算法学习kruskal
Codeforces Round #446 (Div. 1) 题意 有n个节点m条边的无向图图G,可以保证连通性。现在有q个询问,每个询问有k个边,判断是都在同一个最小生成树中,若存在则输出YES否则输出NO。 样例 输入: 5 7 1 2 2 1 3 2 2 3 1 2 4 1 3 4 1 3 5 2 4 5 2 4 2 3 4 3 3 4 5 2 1...原创 2018-07-14 22:02:22 · 321 阅读 · 0 评论