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

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

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. Web Storage和cookie的区别——每日一题20190629

    Web Storage? 使用HTML5可以在本地存储用户的浏览数据. 使用的主要目的是为了克服Cookie带来的一些限制,当数据需要被严格控制在客户端上时,无需持续的将数据发回服务器 主要目标: 1 ...

  2. mvvm的初步思想

    1.Object.defineProperty(obj,key,desc); 用法:1.给对象新增属性和特性 2.修改对象属性值和特性 desc(属性特性): 1.enumerable:boolean ...

  3. Java求和的整体思路

    一.    设计思想: 设计这个程序我们需要考虑到参数的输入,并且可以输入多个参数,以及为用户考虑到各种的边界问题.首先第一步我们应该给出输入参数的语句,让用户可以输入.第二步我们应对其进行参数个数的 ...

  4. 最简单的ArcGIS Engine应用程序(上)

    名词: IWorkspaceFactory 工作空间工厂 ShapeFileWorksapceFactory 矢量文件工作空间工厂 IWorkspce 工作空间 IFeatrueWorkspace 要 ...

  5. 爬虫破解知乎登入(不使用Selenium模块)

    一.分析 知乎完成登入的步骤 首先获得cookies(如果不获得后面验证码无法获得) 获得验证码 提交登入相关内容 前两步简单稍微细心寻找规律即可 其中最难的是第三步应该他前端进行了js加密 这里没什 ...

  6. Flask的使用以及返回值(其中Response后续详细单独补充)

    一.使用 安装依赖pip3 install flask 第一步 创建Flask对象 from flask import Flask app =Flask(__name__) 第二步 创建路由 @app ...

  7. Web安全之url跳转漏洞及bypass总结

    0x01 成因 对于URL跳转的实现一般会有几种实现方式: META标签内跳转 javascript跳转 header头跳转 通过以GET或者POST的方式接收将要跳转的URL,然后通过上面的几种方式 ...

  8. perftools::tcmalloc

    安装libunwind wget http://ftp.yzu.edu.tw/nongnu/libunwind/libunwind-1.1.tar.gz ./configure make make i ...

  9. SSH通道来访问MySQL

     许多时候当要使用Mysql时,会遇到如下情况: 1. 信息比较重要,希望通信被加密.2. 一些端口,比如3306端口,被路由器禁用. 对第一个问题的一个比较直接的解决办法就是更改mysql的代码,或 ...

  10. .Net Core3.0 配置Configuration

    准备 .NET core和.NET项目配置上有了很大的改变,支持的也更加丰富了比如命令行,环境变量,内存中.NET对象,设置文件等等..NET项目我们常常把配置信息放到webConfig 或者appC ...