直秒并查集。这题的难点就在于怎么删点。如果要删的是叶节点,那还好,直接刨掉即可

如果是中间节点甚至是根节点,那就不好办了.....

solution:

对于独立一个点,我可以用邻接表模拟,然后用并查集维护联通,删点就是普通删点,但是实现难度高,复杂度大,算了,还是想正解吧

正解:对于一个删了的点,我们打个标记,然后开一个新点表示这个点(居然有点像主席树233.....)

于是,动态开点并查集诞生了(口胡)

具体操作在代码里解释

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=2e6+;
int n,m,ans,vis[maxn],fa[maxn],d[maxn],cnt;
int T;
int find(int x)//普普通通的并查集
{
if(fa[x]==x)
return x;
return fa[x]=find(fa[x]);
}
void mergy(int x,int y)//普普通通的合并
{
int fx=find(x);
int fy=find(y);
if(fx!=fy)
fa[fx]=fy;
}
void del()//普普通通的清零(多组数据)
{
memset(vis,,sizeof(vis));
ans=;
n=,m=;
}
int main()
{
scanf("%d%d",&n,&m);//普普通通的输入
while(n!=||m!=)
{
T++;//记录组数
cnt=n;
for(int i=;i<n+m;i++)//不太普通的初始化,因为n个点m个操作,极端情况全部都是拆,所以初始化要n+m(提前把动态的点开好)
{
fa[i]=i;
}
for(int i=;i<n;i++)
{
d[i]=i;//d表示fa里,di代替第i个点
}
while(m--)
{
char ch;
cin>>ch;
if(ch=='M')
{
int x,y;
scanf("%d%d",&x,&y);
mergy(d[x],d[y]); //合并新点
}
else
{
int x;
scanf("%d",&x);
d[x]=++cnt;//动态开点,覆盖掉原点
}
}
for(int i=;i<n;i++)
{
int t=find(d[i]);//统计答案
if(!vis[t])//桶统计答案
ans++;
vis[t]=;
}
printf("Case #%d: %d\n",T,ans);
del();
scanf("%d%d",&n,&m);
}
return ;
}

(完)

SP5150 JMFILTER - Junk-Mail Filte(并查集)的更多相关文章

  1. *HDU2473 并查集

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

  2. 51nod 1515 明辨是非 并查集 + set + 启发式合并

    给n组操作,每组操作形式为x y p. 当p为1时,如果第x变量和第y个变量可以相等,则输出YES,并限制他们相等:否则输出NO,并忽略此次操作. 当p为0时,如果第x变量和第y个变量可以不相等,则输 ...

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

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

  4. POJ2513——Colored Sticks(Trie树+欧拉回路+并查集)

    Colored Sticks DescriptionYou are given a bunch of wooden sticks. Each endpoint of each stick is col ...

  5. hdoj 2473 Junk-Mail Filter【并查集节点的删除】

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

  6. HDU 2473 - Junk-Mail Filter ,并查集的删点

    Problem Description Recognizing junk mails is a tough task. The method used here consists of two ste ...

  7. HDU2473 Junk-Mail Filter 【可删除的并查集】

    HDU2473 Junk-Mail Filter Problem Description Recognizing junk mails is a tough task. The method used ...

  8. 【洛谷 P1653】 猴子 (并查集)

    题目链接 没删除调试输出,原地炸裂,\(80\)->\(0\).如果你要问剩下的\(20\)呢?答:数组开小了. 这题正向删边判连通性是很不好做的,因为我们并不会并查集的逆操作.于是可以考虑把断 ...

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

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

随机推荐

  1. java中List、Set和Map三个接口及其主要实现类

    三个接口都在java.util包下 List与Set具有相似性,它们都是单列元素的集合,所以,它们有一个共同的父接口,叫Collection,Map没有继承Collection接口 1.List接口: ...

  2. Formform

    知识预览 一 Django的form组件 二 Django的model form组件 三 Django的缓存机制 四 Django的信号 五 Django的序列化 回到顶部 一 Django的form ...

  3. 带你涨姿势的认识一下 Kafka

    Kafka 基本概述 什么是 Kafka Kafka 是一个分布式流式平台,它有三个关键能力 订阅发布记录流,它类似于企业中的消息队列 或 企业消息传递系统 以容错的方式存储记录流 实时记录流 Kaf ...

  4. selenium3与Python3实战 web自动化测试框架 ☝☝☝

    selenium3与Python3实战 web自动化测试框架 selenium3与Python3实战 web自动化测试框架 学习 教程 一.环境搭建 1.selenium环境搭建 Client: py ...

  5. ES6入门之let和const命令

    前言 大家好,我是一只流浪的kk,当你看到这边博客的时候,说明你已经进入了ES6学习的领域了,从本篇博客开始,我将会将自己学习到ES6的相关知识进行整理,方便大家参考和学习,那么我将带你进入第一节的内 ...

  6. 使用AddLayer方法加载shp文件中使用的Map、Dataset等对象详解

    内容源自:ArcGIS Engine+C#入门经典 方法二:使用axMapControl1对象的AddLayer方法加载ShapeFile文件 添加ShapeFile文件需要用到Map.Dataset ...

  7. CSS核心问题

    本文将讲述 CSS 中最核心的几个概念,包括:盒模型.position.float等.这些是 CSS 的基础,也是最常用的几个属性,它们之间看似独立却又相辅相成.为了掌握它们,有必要写出来探讨一下,如 ...

  8. opencv::自定义线性滤波

    卷积概念 常见算子 自定义卷积模糊 卷积概念 1.卷积是图像处理中一个操作,是kernel在图像的每个像素上的操作. 2.Kernel本质上一个固定大小的矩阵数组,其中心点称为锚点(anchor po ...

  9. Spring Boot2 系列教程(十六)定时任务的两种实现方式

    在 Spring + SpringMVC 环境中,一般来说,要实现定时任务,我们有两中方案,一种是使用 Spring 自带的定时任务处理器 @Scheduled 注解,另一种就是使用第三方框架 Qua ...

  10. lcx 内网转发

    把放置到已经控制的内网主机 执行 内网主机输入命令lcx.exe -slave 外网ip 外网端口 内网ip 内网端口lcx.exe -slave 30.1.85.55 2222 127.0.0.1 ...