uva 11987 Almost Union-Find(带删除操作的并查集)
来源:互联网 发布:放开那三国2等级数据 编辑:程序博客网 时间:2024/05/18 03:17
题目
从Wiking大神那学到的并查集新用法,把一个点从集合中移除的时候,不删除这个点,把它的信息剪切到一个从未出现的新的点中,
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;#define N 200010int fa[N],id[N/2],size[N],val[N];inline int find(int x){ if(fa[x]!=x) return fa[x]=find(fa[x]); return x;}int n,m,op,p,q;int main(){ while(~scanf("%d%d",&n,&m)) { for(int i=0;i<N;i++) { fa[i]=val[i]=i; size[i]=1; } for(int i=1;i<=n;i++) { id[i]=i; } int cnt=n; while(m--) { scanf("%d",&op); if(op==3) { scanf("%d",&p); int fa=find(id[p]); printf("%d %d\n",size[fa],val[fa]); } else { scanf("%d%d",&p,&q); if(op==1) { int fp=find(id[p]),fq=find(id[q]); if(fp!=fq) { fa[fp]=fq; size[fq]+=size[fp]; val[fq]+=val[fp]; } } else { int fp=find(id[p]),fq=find(id[q]); if(fp!=fq) { size[fp]--; val[fp]-=p; id[p]=(++cnt); fa[id[p]]=fq; size[fq]++; val[fq]+=p; } } } } } return 0;}
0 0
- uva 11987 Almost Union-Find(带删除操作的并查集)
- uva 11987 Almost Union-Find(带删除操作的并查集)
- UVA 11987 Almost Union-Find(带删除操作的并查集)
- UVa-11987 Almost union-find(带删除操作的并查集)
- UVA 11987 Almost Union-Find (带权并查集的操作及并查集的删除操作)
- UVA - 11987 Almost Union-Find(带删除的并查集)
- UVA - 11987 Almost Union-Find(带删除的并查集)
- UVA 11987 Almost Union-Find(带删除的并查集)
- UVA 11987 Almost Union-Find(带有删除操作的并查集)
- uva 11987 Almost Union-Find(并查集的删除操作)
- UVA 11987 Almost Union-Find(有删除操作的并查集)
- UVA 11987 Almost Union-Find 并查集的删除操作 懒惰标记
- UVA 11987 Almost Union-Find 并查集节点删除
- 11987 - Almost Union-Find(并查集删除操作)
- UVA 11987——Almost Union-Find(并查集+删除操作)
- UVa 11987 Almost Union-Find (加权并查集&删除结点的技巧)
- UVA 11987 Almost Union-Find(并查集的删除)
- Almost Union-Find(并查集删除)
- Qt Creator文件添加助手(持续更新中...)
- FFMPEG结构体分析:AVStream
- iOS开发-strong, weak区别
- GoLang之Concurrency再讨论
- poj 2074 Line of Sight(计算几何)
- uva 11987 Almost Union-Find(带删除操作的并查集)
- oracle opatch 工具的使用(oracle小补丁安装)
- poj 3164 最小树形图模板题目,朱刘算法
- 文摘:关于 绩效考核/价值观/创新
- ORDER BY RAND()
- 视觉直观感受 7 种常用的排序算法
- 谷歌眼镜开发Mirror API之快速启动
- CocoaPods安装和使用教程
- 单链表的归并1