CSU 1601: War
2016-02-27 23:12
405 查看
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1601
问删掉一些边后有几个联通分量,倒着做一遍并查集就ok了!!!
问删掉一些边后有几个联通分量,倒着做一遍并查集就ok了!!!
#include<iostream> #include <cstdio> #include <cstring> #include<stdio.h> #include<algorithm> # define N 100005 using namespace std; int n,m;int father ;int q;int ans; int a ,b ,vis ,k ; void init(int n) { for(int i=0;i<=n;i++) { father[i]=i; } ans=n; } int find(int x) { if(x!=father[x]) father[x]=find(father[x]); return father[x]; } void Union(int a,int b) { int fa=find(a);int fb=find(b); if(fa!=fb) { father[fa]=fb; ans--; } } int main() { while(scanf("%d%d",&n,&m)>0) { init(n); for(int i=1;i<=m;i++) { scanf("%d%d",&a[i],&b[i]);vis[i]=1; } scanf("%d",&q); for(int i=1;i<=q;i++) { scanf("%d",&k[i]);vis[k[i]]=0; } for(int i=1;i<=m;i++) { if(vis[i]) Union(a[i],b[i]); } for(int i=q;i>=1;i--) { int tt=k[i]; k[i]=ans; Union(a[tt],b[tt]); } for(int i=1;i<q;i++) { printf("%d ",k[i]); } printf("%d\n",k[q]); } return 0; }
相关文章推荐
- CSU 1202 剪刀石头布(水题)
- CSU 1458 : Booking
- CSU 1506 - Double Shortest Paths(网络流’最小费用流)
- CSU 1527 - Bounty Hunter(DP‘双调旅行商问题)
- CSU 1529 - Equator(双端队列)
- CSU 1598 最长公共前缀 KMP连续匹配
- CSU 1596 Dick.Z 的炉石赛 数学期望
- CSU 1600: Twenty-four point
- CSU1327+贪心+模拟
- 2016ACM湖南省赛
- CSU1102 多连块拼图 湖南第七届省赛
- acm湖南第七届省赛 RMQ with Shifts (线段树) csu 1110
- CSU1513 Kick the ball! 湖南10届省赛 dfs
- CSU-ACM 1005: Binary Search Tree analog
- CSU-ACM 1004: Xi and Bo
- CSU-1751 卡牌通行证(贪心&&结构体排序)
- CSU1100
- CSU1112
- 省赛记
- 第四次