hdu2473之并查集
来源:互联网 发布:淄博网络推广 编辑:程序博客网 时间:2024/06/05 16:54
思路:每次删除一个点a,并不把a从当前集合删除,而是用一个数组node[a]代表a对应的点,所以每次删除a后,node[a]=++n,即开辟一个新的点作为a对应的点,这样就不会影响a这个集合
http://acm.hdu.edu.cn/showproblem.php?pid=2473
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<string>#include<queue>#include<algorithm>#include<map>#include<iomanip>#define INF 99999999using namespace std;const int MAX=100000+10;int father[MAX+MAX*10],rank[MAX+MAX*10],node[MAX],sum;void makeset(int num){for(int i=0;i<=num;++i){father[i]=i;rank[i]=1;}}int findset(int v){if(v != father[v])father[v]=findset(father[v]);return father[v];}void Union(int x,int y){int a=findset(x);int b=findset(y);if(a == b)return;if(rank[a]>rank[b]){father[b]=a;rank[a]+=rank[b];}else{father[a]=b;rank[b]+=rank[a];}--sum;}bool Delete(int x){int a=findset(x);if(rank[a]>1){++sum;--rank[a];return true;}return false;} int main(){int n,m,a,b,num=0;char s;while(scanf("%d%d",&n,&m),n+m){makeset(n+m);for(int i=0;i<=n;++i)node[i]=i;sum=n;for(int i=0;i<m;++i){getchar();scanf("%c",&s);if(s == 'M'){scanf("%d%d",&a,&b);Union(node[a],node[b]);}else{scanf("%d",&a);if(Delete(node[a]))node[a]=++n;//开辟新点作为a对应的点 }} printf("Case #%d: %d\n",++num,sum);}return 0;}
- hdu2473之并查集
- hdu2473(并查集)
- HDU2473 删点并查集
- hdu2473 删点并查集
- Hdu2473 - Junk-Mail Filter - 并查集
- HDU2473 并查集的删除
- HDU2473 并查集的删除
- *hdu2473 (并查集的删除)
- hdu2473(并查集的删除)
- hdu2473 Junk-Mail Filter 并查集的删除
- Junk-Mail Filter(hdu2473并查集+删点操作)
- hdu2473 Junk-Mail Filter (并查集删除节点)
- hdu2473 Junk-Mail Filter-并查集(删除)
- hdu2473 Junk-Mail Filter(删点并查集)
- 09-07 HDU_Steps5.1 并查集 HDU1829 HDU1325 HDU1598 HDU3461 HDU3635 HDU2473 HDU3172 HDU3038
- hdu2473 Junk-Mail Filter(并查集(虚拟父亲)+删点)
- hdu2473——Junk-Mail Filter(并查集+虚父节点的使用)
- hdu2473 Junk-Mail Filter 并查集+删除节点+路径压缩
- DFS 题目1114:神奇的口袋
- 循环字符串
- MySQL 生成随机密码 笔记
- 辞职后五险一金怎么处理?收藏下来吧~
- HDOJ 1712 ACboy needs your help(分组0/1背包)
- hdu2473之并查集
- ORACLE的几个函数在MYSQL里面的简单实现 笔记
- 不得不说的处女面
- Web服务器性能/压力测试工具http_load、webbench、ab、Siege使用教程
- 获取applicationContext的几种方式
- 自定义RadioButton ,单选按钮
- /etc/passwd & /etc/shadow 详解
- 20多岁,你迷茫又着急。你想要房子你想要汽车,你想要旅行你想要享受生活。 你那么年轻却窥觑整个世界
- 无聊写的东西,勿吐槽,仅供本人娱乐