博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 2473 Junk-Mail Filter 删点并查集
阅读量:4594 次
发布时间:2019-06-09

本文共 1079 字,大约阅读时间需要 3 分钟。

删点并查集,就是用一个新的点标取代之前的点标就可以。

。 y一下就能够了

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define mod 1000000007#define ll int#define N 100101ll r[1100010], f[1100010], a[N], top;ll n, m;ll find(ll x){return x==f[x]?x:f[x] = find(f[x]);}void Union(ll x, ll y){ ll fx = find(x), fy = find(y); if(fx==fy) return; if(r[fx]>r[fy]) swap(fx,fy); f[fx] = fy; r[fy] += r[fx];}void Del(ll x){ find(a[x]); a[x] = top; r[top] = 1; f[top] = top; top++;}void init(){ for(ll i = 0; i < n; i++) f[i] = a[i] = i, r[i] = 1; top = n;}set
s;int main(){ int i, j, u, v, Cas = 1; while(scanf("%d %d",&n,&m), n+m){ init(); while(m--) { char c[10]; scanf("%s %d",c,&u); if(c[0]=='M') { scanf("%d",&v); Union(a[u], a[v]); } else Del(u); } s.clear(); for(i = 0; i < n; i++) for(i = 0; i < n; i++) s.insert(find(a[i])); printf("Case #%d: %d\n", Cas++, s.size()); } return 0;}

转载于:https://www.cnblogs.com/wzjhoutai/p/7127936.html

你可能感兴趣的文章
实验二
查看>>
angularJs项目实战!02:前端的页面分解与组装
查看>>
再谈组合
查看>>
代码编程题
查看>>
Django简介
查看>>
习题2-6排列(permutation)
查看>>
Mybatis基本配置(一)
查看>>
[js高手之路]this知多少
查看>>
Android攻城狮布局动画
查看>>
正则表达式零宽断言详解(?=,?<=,?!,?<!)
查看>>
20145205 《Java程序设计》实验报告三:敏捷开发与XP实践
查看>>
利用Spring.NET实现WCF的AOP编程
查看>>
第三方,解决模型无法在获取网络数据之后传值问题
查看>>
对比 Git 与 SVN,这篇讲的很易懂
查看>>
【snmp】Linux开启snmp及查询
查看>>
CSU 1532: JuQueen(线段树)
查看>>
设定MyEclipse编辑代码区域文字的大小及非keyword的字体、字形和颜色
查看>>
LeetCode【6】. ZigZag Conversion --思路图解与java实现
查看>>
git 合并分支
查看>>
NSNotification与NSNotificationCenter
查看>>