并查集(删除节点,就是增加一个新的爹)
来源:互联网 发布:qq五笔mac版 编辑:程序博客网 时间:2024/05/22 17:35
题目链接:点击打开链接
代码:
#include<string.h>#include<algorithm>#include<set>#include<stdio.h>using namespace std;int a[1000010];int b[1000010];int find(int x){ return a[x]==x?a[x]:a[x]=find(a[x]);}void marge(int x,int y){ int fx,fy; fx=find(x); fy=find(y); if(fx!=fy) a[fx]=fy;}set<int>s;int main(){ int n,m; int i,k; int x,y; int T=1; while(scanf("%d%d",&n,&m),n|m) { k=n; for(i=0; i<1000000; i++) a[i]=i; for(i=0; i<n; i++) b[i]=i; char ch; while(m--) { getchar(); scanf("%c",&ch); if(ch=='M') { scanf("%d%d",&x,&y); marge(b[x],b[y]); } else { scanf("%d",&x); b[x]=k; k++; } } s.clear(); for(i=0; i<n; i++) s.insert(find(b[i])); printf("Case #%d: %d\n",T++,s.size()); } return 0;}就是用两个数组,一个是找爹用的,另外一个是记录数据用的,但隔离这个点的时候,从新给这个点找一个爹,其他的都和并查集一样。
0 0
- 并查集(删除节点,就是增加一个新的爹)
- 并查集(删除节点)
- 并查集 ,删除节点(图画展示)
- 并查集节点删除于添加
- hdu 2473 Junk-Mail Filter(删除节点操作的并查集)
- *hdu2473 (并查集的删除)
- hdu2473(并查集的删除)
- 并查集的删除
- hdu2473 Junk-Mail Filter (并查集删除节点)
- UVA 11987 Almost Union-Find 并查集节点删除
- 合纵连横 1022 nsoj 并查集 删除节点
- HDU 2473 Junk-Mail Filter(并查集删除节点)
- ZOJ 3789 Gears (并查集 合并+删除+离根节点的距离)
- 并查集 删除节点 求集合的个数<set> hdu 2473
- HDU2473 - Junk-Mail Filter 利用虚拟数组实现删除并查集的节点
- FZU2155 盟国 (并查集的虚拟节点)
- HRBUST 2189 节点的连接 (并查集)
- hrbust 2189 节点的连接(并查集)
- .NET c# EF DB first 连接mysql 实施
- 史上最详细Windows版本搭建安装React Native环境配置
- SQL镜像
- HDU 5575 Discover Water Tank
- filesystem-e2fsprog
- 并查集(删除节点,就是增加一个新的爹)
- poj2376
- 11g R2 节点系统重建后,删除节点及添加节点 过程和问题解决
- PopupWindow简单使用
- 自定义CircleProgressBar
- Tyvj P2002 扑克牌
- (一)STM32固件库详解(转载)
- WiFi、ZigBee、BLE用哪个?小米内部是这样选的
- Kotlin实现配置化网络请求