并查集
yxg_123
这个作者很懒,什么都没留下…
展开
-
codevs 1073 家族 并查集
题目链接:http://www.codevs.cn/problem/1073/题意:题解:代码:#include <bits/stdc++.h> using namespace std; typedef long long ll; #define MS(a) memset(a,0,sizeof(a)) #define MP make_pair #define PB push_back const i原创 2017-03-03 01:16:47 · 299 阅读 · 0 评论 -
cdoj 1070 秋实大哥打游戏 带权并查集
题目链接:http://acm.uestc.edu.cn/#/problem/show/1070题意:题解:带权并查集 每次往上更新的时候,顺便把边权更新了就好 记住得路径压缩代码:#include <bits/stdc++.h> using namespace std; typedef long long ll; #define MS(a) memset(a,0,sizeof(a)) #def原创 2017-03-03 12:14:29 · 241 阅读 · 0 评论 -
hdu 1257 小希的迷宫 并查集
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272题意:题解:用并查集来判断是否都在一个集合里面,是否成环,就好了代码:#include <bits/stdc++.h> using namespace std; typedef long long ll; #define MS(a) memset(a,0,sizeof(a)) #define MP原创 2017-03-03 14:44:17 · 206 阅读 · 0 评论 -
hdu 4496 D-City 并查集
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4496题意:给你个图,他不断删边,然后问你联通块的个数题解:我们可以逆向认为所有的点全是独立的,因为正向的时候去掉其中某条边的,独立的点不一定会增多(去掉这条边后还有其他边间接的相连),所以当我们逆向思考的时候,只会在增加某一条边时减少独立的点(也就是联通的点增多),这样只会在他之后才会有可能有某条边的操原创 2017-03-03 15:08:06 · 218 阅读 · 0 评论 -
bzoj 1015: [JSOI2008]星球大战starwar 并查集
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1015题意:题解:逆向思维+并查集。处理连通这让我们想到并查集,题目中的输入是一次破坏哪一个结点,我们可以逆着想,在剩余结点的基础上反向逐个加入被删除的结点,使每个结点与其相邻的并且处在目前未删除点集中的结点合并、tot维护联通块的数目、ans存储每次的tot。代码:#include <bit原创 2017-03-03 16:24:07 · 246 阅读 · 0 评论 -
51nod 1307 绳子与重物 二分+dfs / 并查集
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1307题意:题解:方法一: 因为所有绳子最终组成了1棵树,所以我们可以通过一次DFS,来检测是否有某根绳子下面绑了超过他所能负荷的重量。 具体方法:对每个节点,计算其子树的重量和(包含自身的重量),如果大于能承受的最大重量,则绳子会断,否则不会断。 一次DFS原创 2017-03-22 20:48:30 · 402 阅读 · 0 评论 -
poj1182 食物链 带权并查集 偏移量
题目链接:http://poj.org/problem?id=1182题意:题解:大牛题解:http://blog.csdn.net/niushuai666/article/details/6981689 合并: d-1是偏移量,ra->rb, ra作为rb的父亲,注意方向【箭头是把右边合并到左边】 向量的思想: if(ra!=rb)不在一个集合里,合并 fa[rb]=ra,还需要更新r[r原创 2017-04-11 16:10:52 · 349 阅读 · 0 评论