并查集
Vas_Sago
这个作者很懒,什么都没留下…
展开
-
Segment set(HDU1558)(C)
どこでもドア:http://acm.hdu.edu.cn/showproblem.php?pid=1558 P:输入一条线段 Q:输出第k条线段有几个“朋友”(有几条连通的线段) 比较麻烦的是 判断两条线段是否相交。除去判断,这就是一个简单并查集题。 判断两条线段是否相交有好多算法。。我就copy了一个(copy的第一个有bug坑了我半天,所以copy的先验证)CODE:#include<i原创 2016-10-07 19:23:24 · 213 阅读 · 0 评论 -
Corporative Network(POJ1962)(B)
どこでもドア:http://poj.org/problem?id=1962E x : 查看x到根的距离 I x y: 设置x为y子节点,y为根。x,y之间距离为|x-y|%1000从题意来看结点到根的距离需要更新。方法是在路径压缩时候借用递归更新数组。CODE:#include<iostream> #include<cstdio> #include<algorithm> #include<cmat原创 2016-10-07 19:42:00 · 372 阅读 · 0 评论 -
Is It A Tree?(POJ1308/HDU1325)(A)
どこでもドア:http://acm.hdu.edu.cn/showproblem.php?pid=1325 どこでもドア:http://poj.org/problem?id=1308 并不难。。难的是爬不出这巨坑。。。 对这个题POJ的没有HDU的数据大。poj过了,hdu可能要扩大些数组判断是不是1个树,判断是否有环,是不是1个树就ok了, 测试数据: 0 0 // true 1 1原创 2016-10-07 19:56:56 · 245 阅读 · 0 评论 -
The Suspects(POJ1611)(入门)
どこでもドア:http://poj.org/problem?id=1611 和0号病号一起的都是SARS患者#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> using namespace std;const int MAX=30005; int ma[MAX],fri[MAX];int Find(int原创 2016-10-07 20:01:35 · 216 阅读 · 0 评论 -
How Many Tables(HDU1213)(入门)
どこでもドア:http://acm.hdu.edu.cn/showproblem.php?pid=1213N个编号,M个连通 输出有几个集合 CODE:#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> using namespace std; const int MAX=100005; int ma[M原创 2016-10-07 20:05:23 · 235 阅读 · 0 评论 -
(Uva)Buy or Build(B)
どこでもドア: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3592#include<iostream> #include<fstream> #include<cstdio> #include<cmath> #include<cstring> #inc原创 2016-12-06 16:11:54 · 291 阅读 · 0 评论 -
(codeforces)A. Bear and Friendship Condition
どこでもドア:http://codeforces.com/problemset/problem/771/A并查集。记录每个连通块的边数和成员数,如果每个连通块的 成员数*(成员数-1)/2==边数,那么就yescodeconst int MAX = 150010; int uni[MAX]; LL sum_member[MAX],sum_side[MAX];void init(int len){原创 2017-04-15 19:24:47 · 504 阅读 · 0 评论 -
(codeforces)C. Socks
どこでもドア:http://codeforces.com/problemset/problem/731/C并查集。。贪心。。code:const int MAX=2*1e5+5;int color[MAX],uni[MAX],sum[MAX],n,m,k,a,b; int get_boss(int x){ return x==uni[x] ? x : uni[x]=get_boss(uni[原创 2017-04-16 11:25:57 · 302 阅读 · 0 评论