![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构--并查集
AliceBuJu
这个作者很懒,什么都没留下…
展开
-
【codevs 3554】犯罪团伙
并查集。#include<cstdio>#include<iostream>using namespace std;int fa[10000+5];int n,m,ans=0;int find(int x){ return fa[x]==x?x:fa[x]=find(fa[x]);}void merge(int x,int y){ int t1=find(x),t2原创 2017-09-25 11:54:27 · 550 阅读 · 0 评论 -
【codevs 2597】团伙
并查集水题。#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;int n,m;const int maxn=2*5000+5;int fa[maxn],rank[maxn];int cnt=0;bool used[maxn];int find(int原创 2017-09-28 07:10:53 · 211 阅读 · 0 评论 -
【codevs 1001】舒适的路线
并查集+贪心+最小生成树+枚举 按照边权从大到小枚举一个最大边权maxl,然后从仅次于最大边权的边开始从大到小枚举最小边权minl。这样每次枚举最小边权时,最大边权都是确定的,可以看做是一个常数。直到枚举到起点和终点联通为止。最大边权枚举m次,每次可以更新一次答案(即ansmax和ansmin)。 PS:输出答案时需要用到gcd来输出分数#include<cstdio>#include<ios原创 2017-09-28 09:16:24 · 285 阅读 · 0 评论 -
【codevs 1074】食物链
并查集。开三倍空间,x1(或y1)代表自己,x2(或y2)代表食物,x3(或y3)代表敌人。 PS:调了半天,原来是并查集打错了(哭)。#include<iostream>#include<cstdio>#include<cstring>using namespace std;int n,m,cnt=0;const int maxn=3*50000+5;int fa[maxn],ran原创 2017-09-27 21:47:14 · 194 阅读 · 0 评论 -
【codevs 1069】关押罪犯
并查集。开双倍空间。(类似于食物链) PS:跌倒在sort上……n和m一定分清楚TAT#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;int n,m;const int maxn=2*100000+5;int fa[maxn],rank[maxn];s原创 2017-09-28 06:58:19 · 451 阅读 · 0 评论 -
【codevs 1540】银河英雄传说
sum[]以当前舰艇为首的队伍长度 s[]当前舰艇到根节点的距离#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>using namespace std;int n,sum[500005],s[500005],fa[500005],x,y;char a;int find(int x){原创 2017-10-30 17:05:40 · 225 阅读 · 0 评论