FZU2155 盟国 (并查集的虚拟节点)
来源:互联网 发布:3d数据库 编辑:程序博客网 时间:2024/04/29 20:24
有关并查集中元素的删除问题,删除其中一个元素的话虽其他元素之间的关系式没有影响的,这点一定要注意,要解决这个问题,可以不动原来的节点,而建立一个映射,是那些删掉的几点映射到一个更大得数,用数组来记录,当他要再次合并时,只要查找他的映射关系即可,最后统计一下。
#include<stdio.h>#include<string.h>int father[3000000],a[1000010],b[1000010];int k;int find(int x){ if(x==father[x]) return x; father[x]=find(father[x]); return father[x];}int main(){ char c; int n,m,cas=1,ans,i,x,y,fx,fy; while(~scanf("%d%d",&n,&m)) { if(n==0&&m==0) break; ans=0; for(i=0;i<n;i++) { father[i]=i; a[i]=i; } k=n; while(m--) { getchar(); scanf("%c",&c); if(c=='M') { scanf("%d%d",&x,&y); x=a[x]; y=a[y]; fx=find(x); fy=find(y); if(fx!=fy); father[fx]=fy; } if(c=='S') { scanf("%d",&x); a[x]=k; father[k]=k; k++; } } memset(b,0,sizeof(b)); for(i=0;i<n;i++) { int temp=find(a[i]); if(!b[temp]) { ans++; b[temp]=1; } } printf("Case #%d: %d\n",cas++,ans); } return 0;}
0 0
- FZU2155 盟国 (并查集的虚拟节点)
- fzu2155(并查集,删除)
- FZU - 2155 - 盟国 (带删除的并查集~~)
- foj2155 - 盟国 (并查集的删除操作)
- fzu 2155 盟国 并查集的增删
- FZU 2155 盟国(并查集的删除)
- fzu 2155 盟国 并查集的增删
- Fzu 2155 盟国【并查集的增删】裸题
- UVA 11987 并查集(虚拟节点)
- FZOJ 2155 盟国 (并查集,删除结点)
- 【带删除并查集】FZU 2155——盟国
- HDU2473 - Junk-Mail Filter 利用虚拟数组实现删除并查集的节点
- hdu 2473 Junk-Mail Filter(并查集(虚拟父节点))
- HDU 2473 Junk-Mail Filter 并查集删除(FZU 2155盟国)
- HRBUST 2189 节点的连接 (并查集)
- hrbust 2189 节点的连接(并查集)
- 并查集(删除节点)
- HDOJ 2473 Junk-Mail Filter(并查集集合删点+虚拟父节点)
- Java程序员从笨鸟到菜鸟之(一)开发环境搭建,基本语法,字符串,数组
- usaco buylow dp+记录路径
- (二)安卓android游戏开发之2048游戏开发教程----深刻理解LinearLayout布局
- ZOJ 3798 Abs Problem(规律题)
- getClassLoader 和 ClassLoader.getSystemClassLoader()区别
- FZU2155 盟国 (并查集的虚拟节点)
- 工具——通过鼠标点击获取图像坐标
- 几乎自动的管理内存
- 【CSS】——display:inline与display:block
- 关于函数嵌套调用中的参数引用问题
- Socket.IO 配置、房间、事件
- Linux系列:grep命令使用
- Java程序员从笨鸟到菜鸟之(二)面向对象之封装,继承,多态(上)
- junit对程序进行测试