2018.09.12 hdu2473Junk-Mail Filter(并查集)
传送门 
一开始开题还以为是平衡树。 
仔细想了一想并查集就可以了。 
合并操作没什么好说的。 
删除操作:对于每个点记录一个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(并查集)的更多相关文章
- Artificial Intelligence Computing Conference(2018.09.12)
		
时间:2018.09.12地点:北京国际饭店会议中心
 - hdu  2473 Junk-Mail Filter (并查集之点的删除)
		
Junk-Mail Filter Time Limit: 15000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
 - hdu2473  Junk-Mail Filter 并查集+删除节点+路径压缩
		
Description Recognizing junk mails is a tough task. The method used here consists of two steps: 1) ...
 - HDU 2473 Junk-Mail Filter(并查集+删点,设立虚父节点/找个代理)
		
题意:有N封邮件, 然后又两种操作,如果是M X Y , 表示X和Y是相同的邮件.如果是S X,那么表示对X的判断是错误的,X是不属于X当前所在的那个集合,要把X分离出来,让X变成单独的一个.最后问集 ...
 - (step5.1.2)hdu 2473(Junk-Mail Filter——并查集)
		
题目大意:输入两个整数n,m(n表示点的个数,m表示操作数).在接下来的m行中,对点的操作有两种 1)M a b . 表示将a.b并到一个集合中 2)S a .表示将a从原来的集合中去除,而成为一个单 ...
 - 2018.08.21 bzoj4668: 冷战(并查集+启发式合并)
		
传送门 可以发现需要维护连通性和两点连通时间. 前者显然是并查集的常规操作,关键就在于如何维护两点的连通时间. 然后会想到这个时候不能用路径压缩了,因为它会破坏原本树形集合的结构,因此可以启发式按si ...
 - HDU 2473 Junk-Mail Filter 并查集,虚拟删除操作
		
http://acm.hdu.edu.cn/showproblem.php?pid=2473 给定两种操作 第一种是合并X Y 第二种是把X分离出来,就是从原来的集合中分离出来,其它的关系不变. 关键 ...
 - HDU 2473 Junk-Mail Filter(并查集的删除操作)
		
题目地址:pid=2473">HDU 2473 这题曾经碰到过,没做出来. .如今又做了做,还是没做出来. ... 这题涉及到并查集的删除操作.想到了设一个虚节点,可是我把虚节点设为了 ...
 - 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~ ...
 
随机推荐
- js前台遍历后台返回的Datatable数据
			
jsondata 后台返回的datatable ) { ; j < jsondata.length; j++) { jsondata[j]; }; }
 - 转载:mysql binlog同步redis
			
ref: https://wenku.baidu.com/view/5d9d04ac6394dd88d0d233d4b14e852458fb39c4.html
 - Inspector视图中的get/set使用
			
using UnityEngine; using System.Collections; public class Test : MonoBehaviour { public int width { ...
 - Unity C# 调用 C++ DLL 并在 DLL 中调用 C# 的回调函数
			
Unity C# 调用 C++ DLL 并在 DLL 中调用 C# 的回调函数~~~ 呵呵... 看着有点晕.. 再解释一下就是 在Unity中 使用 C# 调用 C++ 写的 DLL, 但是在 ...
 - spring 3.x + hibernate4.x 实现数据延迟加载
			
Spring为我们解决Hibernate的Session的关闭与开启问题. Hibernate 允许对关联对象.属性进行延迟加载,但是必须保证延迟加载的操作限于同一个 Hibernate Sess ...
 - 构造函数中的super和this的使用
			
super用于调用父类构造函数的部分,其必须出现在构造函数的第一行.super在调用时第一件事就是去执行父类构造函数的部分,所执行的父类构造函数与super()括号中的参数相对应. this用于在一个 ...
 - linux下字符串的比较方式
			
A="$1" B="$2" #判断字符串是否相等 if [ "$A" = "$B" ];then echo &qu ...
 - 配置MySQL 5.6的主从复制
			
工具/原料 Windows 7 64位 MySQL 5.6 配置新数据库的主从复制 1 先在主数据库中创建新数据库rep_test. 然后编辑主数据库的my.ini文件 在[mysqld]节点 ...
 - 自己整理lnmp安装
			
1. 操作系统 CentOS release 6.5(final) 2. 安装mysql # yum install mysql-server #vi /etc/my.cnf +def ...
 - Java集合set的并、交、差操作
			
集合的并.交.差操作 Set<Integer> result = new HashSet<Integer>(); Set<Integer> set1 = new H ...