Ural 1671 Anansi's Cobweb
来源:互联网 发布:算法研究员 编辑:程序博客网 时间:2024/06/12 00:22
并查集水题,倒序进行即可。很久没写并查集了,写的极挫。
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define N 100005int r[N][2];int d[N];int par[N];int a[N];int sum[N];int n,m;int Find(int rt){ if(par[rt]==rt)return rt; return par[rt]=Find(par[rt]);}int uni(int x,int y){ int x0,y0; x0=Find(x); y0=Find(y); if(x0>y0) { par[x0]=y0; return 1; } else if(x0<y0) { par[y0]=x0; return 1; } return 0;}int main(){ scanf("%d%d",&n,&m); int x,y; for(int i=1;i<=m;i++) { scanf("%d%d",&r[i][0],&r[i][1]); } int num; memset(a,0,sizeof(a)); for(int i=1;i<=n;i++) par[i]=i; scanf("%d",&num); for(int i=1;i<=num;i++) { scanf("%d",&d[i]); a[d[i]]=1; } for(int i=1;i<=m;i++) { if(a[i]!=1) { uni(r[i][0],r[i][1]); } } memset(sum,0,sizeof(sum)); for(int i=1;i<=n;i++) if(par[i]==i)sum[num]++; for(int i=num;i>=1;i--) { sum[i-1]=sum[i]-uni(r[d[i]][0],r[d[i]][1]); } for(int i=1;i<=num;i++) printf("%d ",sum[i]); printf("\n"); return 0;}
- Ural 1671 Anansi's Cobweb
- Ural 1671 Anansi's Cobweb
- Ural 1671. Anansi's Cobweb
- URAL 1671 Anansi's Cobweb (并查集)
- ural 1671 Anansi's Cobweb-并查集
- Ural 1671 - Anansi's Cobweb 倒过来做...并查集维护..
- Ural 1671. Anansi's Cobweb(并查集)
- Ural 1671. Anansi's Cobweb(并查集)
- URAL1671 Anansi's Cobweb(离线做 + 并查集)
- Ivan's Car URAL
- Ural 1723. Sandro's Book
- ural 1837 Isenbaev's Number
- URAL 1837 Isenbaev's Number
- URAL 1876 Centipede's Morning
- URAL 1387 Vasya's Dad
- ural 1878 Rubinchik's Cube
- URAL 1723. Sandro's Book
- URAL - 1786 Sandro's Biography
- MooseFS分布式存储集群监控警报程序
- n个元素中取m个元素的组合、排列问题
- Struts2中采用Json返回List对象数据为空解决方案
- DELPHI实现关闭指定进程,自身防杀
- JavaScript第四课-CSS
- Ural 1671 Anansi's Cobweb
- 基于运动特征的视频质量评价方法(基于H.264)
- ScrollView无限滚动
- 老鼠走迷宫----------递归问题
- cookie.setPath()的用法
- read_image读取图片变量名
- UVa OJ 146
- Android中的EditText默认时不弹出软键盘的方法
- KMP算法介绍及实现——轻松搞定KMP匹配算法