nyoj 1022:合纵连横(并查集删点)
2017-02-13 12:51
302 查看
题目链接
参考链接
只附代码好了
参考链接
只附代码好了
#include<bits/stdc++.h> using namespace std; const int N=200005; int a ,b ,vis ; int n,m,add,kase; void init() { for(int i=0;i<n;i++) a[i]=i,b[i]=i; add=n; memset(vis,0,sizeof(vis)); } int Find(int x) { return x==a[x]? x:a[x]=Find(a[x]); } void Unite(int x,int y) //入口由b 控制 { x=Find(x),y=Find(y); a[x]=y; } void Remove(int x) { a[add]=add,b[x]=add; add++; //金蝉脱壳 } int main() { while(cin>>n>>m) { init(); while(m--) { char op;int x,y; cin>>op; if(op=='U') { cin>>x>>y; Unite(b[x],b[y]); } else { cin>>x; Remove(x); } } int ans=0; for(int i=0;i<n;i++) { if(!vis[Find(b[i])]) ans++,vis[Find(i)]=1; } printf("Case #%d: %d\n",++kase,ans); } }
相关文章推荐
- NYOJ-1022合纵连横【并查集删除算法】
- 【NYOJ 1022】合纵连横 【并查集的 并查删操作】
- NYOJ-1022合纵连横【并查集删除算法】
- NYOJ-1022合纵连横(并查集的删除操作)
- nyoj1022 合纵连横 ---支持合并,删除,查找的并查集
- NYOJ 1022--合纵连横 【并查集删点】
- nyoj 1022 合纵连横 【并查集的删除】
- nyoj 1022 合纵连横 经典并查集
- NYOJ1022合纵连横(支持删除操作的并查集)
- NYOJ_1022 合纵连横 并查集的删除
- nyoj1022合纵连横(带分离操作的并查集)
- nyoj 1022 合纵连横(经典并查集=---删点操作)
- nyoj 1022 合纵连横【并查集节点的删除】
- NYOJ 1022 合纵连横(并查集删点)
- NYOJ_1022_合纵连横
- 合纵连横 1022 (并查集) 好题
- NYOJ 题目1022合纵连横
- NYOJ合纵连横【并查集的合并和删除】
- NYOJ 合纵连横(并查集删点)
- 并查集之找假爹(并查集删除操作)-NYOJ-合纵连横