传送门

一开始开题还以为是平衡树。

仔细想了一想并查集就可以了。

合并操作没什么好说的。

删除操作:对于每个点记录一个pos值表示原来的点i现在的下标是什么。

每次删除点i是就新建一个点cnt,然后令pos[i]=cnt就行了。

代码;

#include<bits/stdc++.h>
#define N 1200005
using namespace std;
inline int read(){
    int ans=0;
    char ch=getchar();
    while(!isdigit(ch))ch=getchar();
    while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
    return ans;
}
int n,m,fa[N],pos[N],cnt=0,T=0;
bool vis[N];
inline int find(int x){return x==fa[x]?fa[x]:fa[x]=find(fa[x]);}
int main(){
    while(n=read(),m=read(),n||m){
        ++T;
        cnt=n;
        for(int i=1;i<=n+m;++i)fa[i]=i,pos[i]=i,vis[i]=false;
        while(m--){
            char s[2];
            scanf("%s",s);
            if(s[0]=='M'){
                int x=read()+1,y=read()+1,fx=find(pos[x]),fy=find(pos[y]);
                if(fx!=fy)fa[fx]=fy;
            }
            else{
                int x=read()+1;
                pos[x]=++cnt;
            }
        }
        int ans=0;
        for(int i=1;i<=n;++i)if(!vis[find(pos[i])])vis[find(pos[i])]=1,++ans;
        printf("Case #%d: %d\n",T,ans);
    }
    return 0;
}

2018.09.12 hdu2473Junk-Mail Filter(并查集)的更多相关文章

  1. Artificial Intelligence Computing Conference(2018.09.12)

    时间:2018.09.12地点:北京国际饭店会议中心

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

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

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

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

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

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

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

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

  6. 2018.08.21 bzoj4668: 冷战(并查集+启发式合并)

    传送门 可以发现需要维护连通性和两点连通时间. 前者显然是并查集的常规操作,关键就在于如何维护两点的连通时间. 然后会想到这个时候不能用路径压缩了,因为它会破坏原本树形集合的结构,因此可以启发式按si ...

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

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

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

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

  9. HDU 2473 Junk-Mail Filter 并查集删除(FZU 2155盟国)

    http://acm.hdu.edu.cn/showproblem.php?pid=2473 http://acm.fzu.edu.cn/problem.php?pid=2155 题目大意: 编号0~ ...

随机推荐

  1. js前台遍历后台返回的Datatable数据

    jsondata 后台返回的datatable ) { ; j < jsondata.length; j++) { jsondata[j]; }; }

  2. 转载:mysql binlog同步redis

    ref: https://wenku.baidu.com/view/5d9d04ac6394dd88d0d233d4b14e852458fb39c4.html

  3. Inspector视图中的get/set使用

    using UnityEngine; using System.Collections; public class Test : MonoBehaviour { public int width { ...

  4. Unity C# 调用 C++ DLL 并在 DLL 中调用 C# 的回调函数

    Unity C# 调用 C++ DLL 并在 DLL 中调用 C# 的回调函数~~~    呵呵... 看着有点晕.. 再解释一下就是 在Unity中 使用 C# 调用 C++ 写的 DLL, 但是在 ...

  5. spring 3.x + hibernate4.x 实现数据延迟加载

      Spring为我们解决Hibernate的Session的关闭与开启问题. Hibernate 允许对关联对象.属性进行延迟加载,但是必须保证延迟加载的操作限于同一个 Hibernate Sess ...

  6. 构造函数中的super和this的使用

    super用于调用父类构造函数的部分,其必须出现在构造函数的第一行.super在调用时第一件事就是去执行父类构造函数的部分,所执行的父类构造函数与super()括号中的参数相对应. this用于在一个 ...

  7. linux下字符串的比较方式

    A="$1" B="$2"    #判断字符串是否相等 if [ "$A" = "$B" ];then echo &qu ...

  8. 配置MySQL 5.6的主从复制

    工具/原料   Windows 7 64位 MySQL 5.6 配置新数据库的主从复制   1 先在主数据库中创建新数据库rep_test. 然后编辑主数据库的my.ini文件 在[mysqld]节点 ...

  9. 自己整理lnmp安装

    1. 操作系统   CentOS release 6.5(final)   2. 安装mysql   # yum install mysql-server   #vi /etc/my.cnf +def ...

  10. Java集合set的并、交、差操作

    集合的并.交.差操作 Set<Integer> result = new HashSet<Integer>(); Set<Integer> set1 = new H ...