
数据结构:并查集
文章平均质量分 63
BRCOCOLI
初学者 记录成长 Fighting
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
POJ 1611 The Suspects
题目地址 只需要在并查集上加一个数组total保存根的总结点数就好 有两种途径: 1)在求父节点时,直接将子结点的total值全累加到根节点上 #include #include #include #include #include #include #include using namespace std; const int maxn=30000+5; int p[maxn],tota原创 2016-07-23 15:50:22 · 233 阅读 · 0 评论 -
POJ 2349 Arctic Network (Kruskal) .
题目地址:http://poj.org/problem?id=2349 输出用%f而%lf就错了,还好我机智,因为上次被坑过 选第P-S长的边 #include #include #include #include #include #include #include using namespace std; const int maxn=500+5; struct Point{ int原创 2016-08-16 13:00:17 · 269 阅读 · 0 评论 -
POJ 1456 Supermarket [贪心+并查集]
题目地址 贪心:优先选利益最大的商品,从deadline向前推直到都放不了再选下一个商品利益最大的 关键是判断哪一些日子不能再放了,最简单的方法就是一个数组+一个for循环判断 但更快的是用并查集,p=find(deadline) 当p>0,p就是可以放的日子 否则放不了;放好后更新parent[p]=p-1;向前一天递推 #include #include #includ原创 2016-07-24 18:14:10 · 317 阅读 · 0 评论 -
POJ 2236 Wireless Network .
题目地址 #include #include #include #include #include #include #include #include using namespace std; const int maxn=(1001+5); int p[maxn]; double d[maxn][maxn]; int N,maxd; int getPar(int x){ retu原创 2016-07-24 15:58:51 · 370 阅读 · 0 评论 -
POJ 1861 Network .
最最基础题 百练OJ有毒 POJ是对的,在百练怎么都不对 题目地址 #include #include #include #include #include #include #include #include using namespace std; const int maxn=15000+5; int p[1000+5],r[maxn]; struct edge{ int fr原创 2016-07-24 11:48:08 · 256 阅读 · 0 评论 -
POJ 1703 Find them, Catch them .
题目地址 #include #include #include #include #include #include #include #include using namespace std; const int maxn=100000+5; int p[maxn],r[maxn]; int getParent(int x){ if(p[x]==x) return x; in原创 2016-07-24 10:43:00 · 254 阅读 · 0 评论 -
POJ 2492 A Bug's Life .
POJ 1182 食物链 * 的简易版本 此题目POJ题目地址 这类问题共同点就是 1)分为固定几类,2)有类似一个环 男-->女--> 男 要点就是:1)思考集合与集合合并的时候两个根的关系 2)结点压缩的时候,结点与根的关系怎么根据边递推上去 #include #include #include #include #include #inc原创 2016-07-24 00:16:52 · 316 阅读 · 0 评论 -
POJ 2524 宗教信仰 .
题目地址 水题 求有多少个集合 #include #include #include #include #include #include #include #include using namespace std; const int maxn=50000+5; int p[maxn]; int ans=0; int getParent(int x){ if(p[x]==x) retur原创 2016-07-23 23:05:53 · 1334 阅读 · 0 评论 -
POJ 1182 食物链 *
题目地址 用relaton[]数组保存结点与父节点的关系 同时要考虑两个集合并的时候,在状态压缩时要判断子结点与新的父节点的关系 思路来源: http://blog.csdn.net/qq_33901573/article/details/52005905 http://blog.csdn.net/roney_win/article/details/9408571 #i原创 2016-07-23 22:26:43 · 282 阅读 · 0 评论 -
POJ 1988 Cube Stacking
题目地址 total[x]记录最下方木块是x,这一堆总共有多少木块 under[x]记录x木块下面有几块木块 #include #include #include #include #include #include #include using namespace std; const int maxn=30000 + 5; int Par[maxn],total[maxn],under[原创 2016-07-23 17:21:19 · 290 阅读 · 0 评论 -
Canada Cup 2016 A.Jumping Ball并查集 .
#include using namespace std; #define REP(i,a,b) for(int i=a;i<=(b);++i) #define REPD(i,a,b) for(int i=a;i>=(b);--i) #define max(a,b) ((a)>(b)?(a):(b)) #define min(a,b) ((a)<(b)?(a):(b)) int p[200000原创 2016-10-23 09:08:43 · 276 阅读 · 0 评论