
并查集
北狗最光阴1
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
POJ 1703 Find them, Catch them
这题一开始看到的时候就感觉像用并查集,可是怎么分类我想了半天没弄明白,没办法就看别人的题解了。思路如下:如果a属于集团A,那么a+N就属于集团B。例如,如果是D a,b,那么显然a,b是属于不同的集团的。那么,a,b+N就属于相同的集团,a+N,b就属于相同的集团,这样就不用纠结a和b到底属于哪个集团,自己一开始就是陷在这里的。自己的思维还是有点僵化啊。剩下的就是把相同的集团成员合并在一起就行了。原创 2015-01-02 14:53:41 · 427 阅读 · 0 评论 -
POJ 1861 Network
这题就是用最小生成树中的kruskal算法的模板题。#include #include #include #include #include using namespace std;const int N=1002;const int M=15002;const int inf=1<<28;struct edge{ int u,v,cost;}es[M];int原创 2015-02-21 19:49:58 · 424 阅读 · 0 评论 -
POJ 1182 食物链
这题一开始用并查集写,捣鼓了半天不对,于是上网一看用带权并查集,于是乎,就去看带权并查集,然后过来写这题。用deep[i]表示i到祖先的偏移量,如果x和y是一类的,那么偏移量=0,如果x吃y,那么偏移量=1,如果y吃x,那么偏移量=2(这里的y指的是x的祖先)。根据题意,当d=1时,偏移量为0;当d=2时,偏移量=1。具体细节在注释中阐述。#include #include #in原创 2015-01-04 19:05:34 · 302 阅读 · 0 评论