ural 1671 Anansi's Cobweb
2014-03-16 23:43
330 查看
这道题是并差集的简单应用
View Code
#include <cstdio> #include <cstring> #include <algorithm> #define maxn 100010 using namespace std; int x[maxn],y[maxn],flag[maxn],f[maxn],t[maxn]; bool vis[maxn]; inline int find(int x) { if(x==f[x]) return x; return f[x]=find(f[x]); } int main() { int n,m,q; scanf("%d%d",&n,&m); for(int i=1; i<=m; i++) { scanf("%d%d",&x[i],&y[i]); } scanf("%d",&q); memset(vis,false,sizeof(vis)); for(int i=1; i<=q; i++) { scanf("%d",&flag[i]); vis[flag[i]]=true; } for(int i=1; i<=n; i++) f[i]=i; for(int i=1; i<=m; i++) { if(!vis[i]) { int a=find(x[i]); int b=find(y[i]); if(a!=b) f[a]=b; } } int ans=0; for(int i=1; i<=n; i++) { if(f[i]==i) ans++; } for(int i=q; i>0; i--) { int a=find(x[flag[i]]); int b=find(y[flag[i]]); t[i]=ans; if(a!=b) { f[a]=b; ans--; } } for(int i=1; i<=q; i++) { if(i==q) printf("%d\n",t[i]); else printf("%d ",t[i]); } return 0; }
View Code
相关文章推荐
- URAL1671 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(离线做 + 并查集)
- Ural 1671. Anansi's Cobweb
- Ural 1671 Anansi's Cobweb
- 1671. Anansi's Cobweb(并查集)
- Ural 1671 Anansi's Cobweb
- ural 1671 Anansi's Cobweb-并查集
- Ural1671-Anansi's Cobweb
- ural 1671
- ural 1671
- ural 1180 Stone Game
- Ural 1260 Nudnik Photographer
- URAL 1821 Biathlon(模拟)
- Ural 1519 Formula 1 插头DP
- URAL 1009. K-based Numbers(简单递推)