#68 (div.2) B(并查集 按秩合并)
来源:互联网 发布:网络贸易 编辑:程序博客网 时间:2024/06/05 00:36
tree
Accepts: 143
Submissions: 807
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
问题描述
有一个树(n个点, n−1条边的联通图),点标号从1~n,树的边权是0或1.求离每个点最近的点个数(包括自己).
输入描述
第一行一个数字T,表示T组数据.对于每组数据,第一行是一个n,表示点个数,接下来n−1,每行三个整数u,v,w,表示一条边连接的两个点和边权.T=50,1≤n≤100000,1≤u,v≤n,0≤w≤1.
输出描述
对于每组数据,输出答案.考虑到输出规模过大,设ansi表示第i个点的答案.你只需输出ans1 xor ans2 xor ans3.. xor ansn即可.
输入样例
131 2 02 3 1
输出样例
1
Hint
ans1=2ans2=2ans3=12 xor 2 xor 1=1, 因此输出1.
哈哈这一次打了BC 26名,有点小激动呢,截个图纪念下
题解:明显最近的点除了自己就是距离为0点,那么使用并查集维护集合的点数,注意这里需要使用按秩合并维护集合点数,否则可能会少算一些点的个数,使得点的个数不正确
#include<iostream>#include<cstdio>#include<list>#include<algorithm>#include<queue>#include<map>#include<vector>#include<set>#include<cmath>#include<string>#include<cstring>#define LL long long #define N 200005#define inf 0x3f3f3f3fusing namespace std;int fa[N],Rank[N];void init(int n){ for(int i=0;i<=n;i++) { Rank[i]=1; fa[i]=i; }}int find(int x){ return fa[x]==x?x:fa[x]=find(fa[x]);}void unio(int x,int y){ x=find(x); y=find(y); if(Rank[x]>Rank[y]) { Rank[x]+=Rank[y]; fa[y]=x; } else { Rank[y]+=Rank[x]; fa[x]=y; }}int main(){#ifdef CDZSC freopen("i.txt","r",stdin);#endif int n,x,y,v,t; scanf("%d",&t); while(t--) { scanf("%d",&n); init(n); for(int i=0;i<n-1;i++) { scanf("%d%d%d",&x,&y,&v); if(v==0) { unio(x,y); } } int tt=Rank[find(1)]; for(int i=2;i<=n;i++) { int x=find(i); tt=tt^Rank[x]; } printf("%d\n",tt); } return 0;}
0 0
- #68 (div.2) B(并查集 按秩合并)
- BestCoder Round #73 (div.2)(B)并查集
- 并查集-按秩合并
- 按秩合并并查集
- 并查集(按秩合并)
- 并查集的按秩合并
- Codeforces Round #250 (Div. 1) B 并查集
- 并查集(按秩合并、路径压缩)
- 并查集入门简略笔记:闲谈按秩合并
- UVA 11354 - Bond(并查集-按秩合并)
- POJ 1611 (并查集,按秩合并)
- 并查集 按秩合并&路径压缩
- bzoj 4668 冷战 按秩合并并查集
- 历史 (并查集 按秩合并)
- 可撤销并查集模板(按秩合并)
- Codeforces Round #133 (Div. 2) B. Forming Teams(并查集)
- Codeforces Round #250 (Div. 2)(B,C,D并查集)
- Codeforces Round #254 (Div. 2) 445B - DZY Loves Chemistry (并查集)
- zstack学习笔记2--点对点通信1
- XMPP
- 经典排序算法系列(一)--------------冒泡排序算法
- android 动画使用
- js 闭包的理解
- #68 (div.2) B(并查集 按秩合并)
- Node.js开发命令行程序
- LVS之DR模式配置
- OC 中一次性代码的两种实现方法
- OC 中一次性代码的两种实现方法
- Count Connected Components
- Hibernate的缓存
- Nginx服务模块开发
- 良人从此不会归来