并查集
北狗最光阴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 · 438 阅读 · 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 · 440 阅读 · 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 · 315 阅读 · 0 评论
分享