http://acm.hdu.edu.cn/showproblem.php?pid=2473

http://acm.fzu.edu.cn/problem.php?pid=2155

题目大意:

编号0~n-1的电子邮件,让你进行归类。

M X Y表示x y是同一类的,而S X则取消之前X的分类。问你经过M次这样的操作后,有多少类相同的邮件。

思路:

下午FZU月赛有这题。不过我没参加- -||||,先暂时退出ACM一段时间。事情多。得先去搞定那个外包的软件了

并查集的应用。多开了一个数组real,记录点的真实存在的位置。

一开始初始化为和fa相同的,删除的时候把原来x所在的位置变为新的一个位置即可,那么原来的集合不受影响。

看代码吧。。

#include<cstdio>
#include<cstring>
const int MAXN=1000000<<1;
int fa[MAXN],real[MAXN];
bool vis[MAXN];
int find(int cur)
{
return fa[cur]==cur?cur:fa[cur]=find(fa[cur]);
}
int main()
{
int n,m,kase=1;
while(~scanf("%d%d",&n,&m),n||m)
{
memset(vis,0,sizeof(vis));
int k=n;
for(int i=0;i<n;i++)
real[i]=fa[i]=i; char cmd[5];
for(int i=0;i<m;i++)
{
scanf("%s",cmd);
if(cmd[0]=='M')
{
int a,b;
scanf("%d%d",&a,&b);
int root_x=find(real[a]),root_y=find(real[b]);
if(root_x!=root_y)
fa[root_x]=root_y;
}
else
{
int a;
scanf("%d",&a);
fa[k]=k;
real[a]=k++;
}
}
int ans=0;
for(int i=0;i<n;i++)
{
int x=find(real[i]);
if(!vis[x])
{
vis[x]=1;
ans++;
}
}
printf("Case #%d: %d\n",kase++,ans);
}
return 0;
}

HDU 2473 Junk-Mail Filter 并查集删除(FZU 2155盟国)的更多相关文章

  1. hdu2473 Junk-Mail Filter 并查集+删除节点+路径压缩

    Description Recognizing junk mails is a tough task. The method used here consists of two steps:  1) ...

  2. HDU2473 Junk-Mail Filter - 并查集删除操作(虚父节点)

    传送门 题意: 每次合并两份邮件,或者将某一份邮件独立出来,问最后有多少个邮件集合. 分析: 考虑初始化每个节点的祖先为一个虚父节点(i + n),虚父节点指向它自己.这样可以进行正常的合并操作. 而 ...

  3. hdu 2473 Junk-Mail Filter (并查集之点的删除)

    Junk-Mail Filter Time Limit: 15000/8000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  4. HDU 2473 Junk-Mail Filter 【并查集删除】

    Junk-Mail Filter Time Limit: 15000/8000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  5. HDU 2473 Junk-Mail Filter 并查集,虚拟删除操作

    http://acm.hdu.edu.cn/showproblem.php?pid=2473 给定两种操作 第一种是合并X Y 第二种是把X分离出来,就是从原来的集合中分离出来,其它的关系不变. 关键 ...

  6. HDU 2473 Junk-Mail Filter(并查集的删除操作)

    题目地址:pid=2473">HDU 2473 这题曾经碰到过,没做出来. .如今又做了做,还是没做出来. ... 这题涉及到并查集的删除操作.想到了设一个虚节点,可是我把虚节点设为了 ...

  7. HDU 2473 Junk-Mail Filter(并查集+删点,设立虚父节点/找个代理)

    题意:有N封邮件, 然后又两种操作,如果是M X Y , 表示X和Y是相同的邮件.如果是S X,那么表示对X的判断是错误的,X是不属于X当前所在的那个集合,要把X分离出来,让X变成单独的一个.最后问集 ...

  8. Hdu 2473(并查集删除操作) Junk-Mail Filter

    有木有非常吊 加强 加强版   啊  ,看了都不敢做了   .后来先做了食物链这个我还是看过的.但还是A不掉,没明确神魔意思 .总而言之.大牛的博客是个好东西.我就那么看了一下,还是不懂怎莫办啊,哎, ...

  9. (step5.1.2)hdu 2473(Junk-Mail Filter——并查集)

    题目大意:输入两个整数n,m(n表示点的个数,m表示操作数).在接下来的m行中,对点的操作有两种 1)M a b . 表示将a.b并到一个集合中 2)S a .表示将a从原来的集合中去除,而成为一个单 ...

随机推荐

  1. thinkphp3.2.3 隐藏url上home模块以及index.php文件

    1.去掉Home index.php 添加如下代码 define('BIND_MODULE', 'Home'); 这时就隐藏了url中的Home 2.去掉index.php thinkphp3.2.3 ...

  2. [转]LNMP环境下的Web常见问题排查(精品)

    来源:http://mp.weixin.qq.com/s? __biz=MjM5NzUwNDA5MA==&mid=200596752&idx=1&sn=37ecae802f32 ...

  3. 强制获取序列下一个值/当前值(oracle函数)

    原文链接--http://blog.csdn.net/qq525099302/article/details/47146393 为什么要使用函数来获取序列值请看这里 -- 创建获取序列下一个值的函数 ...

  4. 最短路 spfa, dijkstra, Floyd

    spfa #include <stdio.h> #include <queue> using namespace std; #define RANGE 101 #define ...

  5. [ Java ] [ Eclipse ] 加速 Eclipse 載入速度-轉載

    加速 Eclipse 載入速度-轉載 https://read01.com/NJjNOB.html

  6. javafx clipboard

    public class EffectTest extends Application { public static void main(String[] args) { launch(args); ...

  7. Exercise : Softmax Regression

    Step 0: Initialize constants and parameters Step 1: Load data Step 2: Implement softmaxCost Implemen ...

  8. nginx最新配置

    #user  nobody;worker_processes  1; #error_log  logs/error.log;#error_log  logs/error.log  notice;#er ...

  9. java(面向对象 )

    java面向对象的语言 对象:真实存在唯一的事物. 类:实际就是对某种类型事物的共性属性与行为的抽取. 面向对象的计算机语言核心思想: 找适合的对象做适合的事情. 如何找适合的对象: 1.sun已经定 ...

  10. python2 pip安装包等出现各种编码错误UnicodeDecodeError: 'ascii'(/或者utf-8) codec can't decode byte 0xd2...

    1.问题描述: python2环境,pip安装包时报错UnicodeDecodeError: 'ascii'(/或者utf-8) codec can't decode byte 0xd2... 类似如 ...