hdu 2473 Junk-Mail Filter 并查集删除
来源:互联网 发布:c语言二进制形式输出 编辑:程序博客网 时间:2024/06/04 19:01
#include<cstdio>#include<cstring>#include<algorithm>#include<vector>using namespace std;const int N=1000005;int set[N];int a[N];bool vis[N];int find(int x){int r=x;while(r!=set[r]){r=set[r];}int temp=x;while(x!=r){temp=set[x];set[x]=r;x=temp;}return r;}void insert(int x,int y){int fx=find(x);int fy=find(y);if(fx==fy) return;set[fx]=fy;}int main(){int n,m;int Case=1;while(scanf("%d%d",&n,&m)!=EOF){if(!n&&!m) break;for(int i=0;i<n;i++){set[i]=i;a[i]=i;}int r,c;char x;int num=n;char str[2];while(m--){getchar();scanf("%s",&str);if(str[0]=='M'){scanf("%d%d",&r,&c);insert(a[r],a[c]);}else {scanf("%d",&r);set[num]=num;a[r]=num++;}}int cnt=0;memset(vis,0,sizeof(vis));for(int i=0;i<n;i++){int x=find(a[i]);if(!vis[x]){vis[x]=1;cnt++;}}printf("Case #%d: %d\n",Case++,cnt);}return 0;}并查集的删除:建一个节点取代删除的节点,就是一个新的集合了,建一个数组记录当前值的真实位置,最后查找的也只是值对应真实位置的关系,所以删除的点就不会有影响。
0 0
- HDU-2473 Junk-Mail Filter 并查集的删除
- Hdu 2473 Junk-Mail Filter (并查集的删除)
- hdu 2473 Junk-Mail Filter 并查集删除
- hdu 2473 Junk-Mail Filter (并查集的删除)
- HDU 2473 Junk-Mail Filter 并查集 惰性删除
- hdu 2473 Junk-Mail Filter 并查集 删除点
- hdu 2473 Junk-Mail Filter 并查集删除
- HDU 2473-Junk-Mail Filter-并查集删除
- HDU 2473 ( Junk-Mail Filter ) (并查集删除操作)
- HDU 2473 Junk-Mail Filter(并查集删除节点)
- hdoj 2473 Junk-Mail Filter 并查集的删除
- hdoj 2473 Junk-Mail Filter 【并查集的删除 】
- HDU 2473 Junk-Mail Filter 并查集拆分
- hdu 2473 Junk-Mail Filter(并查集)
- hdu 2473 Junk-Mail Filter 并查集
- HDU 2473 Junk-Mail Filter 删点并查集
- HDU 2473 Junk-Mail Filter 删点并查集
- 并查集 Junk-Mail Filter hdu 2473
- cmake
- Spring MVC和Struts的比较
- 春
- 华为OJ 铁路栈问题
- Yii框架中使用PHPExcel导出Excel文件
- hdu 2473 Junk-Mail Filter 并查集删除
- 数据挖掘学习笔记之人工神经网络(一)
- 编译的版本号日期不变
- OrmLite 一对多
- C#多线程(三)
- 在yii中使用session和cookie
- 微信开发之移动手机WEB页面(HTML5)Javascript实现一键拨号及短信发送功能
- 平衡树实现(未完成)
- 编程之美——寻找满足条件的整数