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

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

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生成32位UUID

    java生成32位UUID,具体代码如下: package com.fxsen.uuid; import java.util.UUID; /** * Copyright: Copyright (c) ...

  2. Spring Security 动态url权限控制(三)

    一.前言 本篇文章将讲述Spring Security 动态分配url权限,未登录权限控制,登录过后根据登录用户角色授予访问url权限 基本环境 spring-boot 2.1.8 mybatis-p ...

  3. python requests简单接口自动化

    get方法 url:显而易见,就是接口的地址url啦 headers:定制请求头(headers),例如:content-type = application/x-www-form-urlencode ...

  4. Jmeter数据库测试参数化

    一.JDBC Request参数化 方法一.Jmeter参数化,在sql query中使用变量 Jmeter参数化,使用csv参数化 sql query中使用${变量名}引用 设置变量 输出结果: 方 ...

  5. 单调队列与DP

    算是一个总结吧! 先来一个模板: TYVJ 1305 最大子序和 题目描述 输入一个长度为n的整数序列,从中找出一段不超过M的连续子序列,使得整个序列的和最大. 例如 1,-3,5,1,-2,3 当m ...

  6. 小工具---将图片文件MultipartFile保存到指定目录

    import org.springframework.web.multipart.MultipartFile; import java.io.IOException; /** 保存图片 @author ...

  7. 基于canvas实现钟表

    原理说明 1.通过arc方法实现钟表外环: 2.通过line实现钟表时针,分针,秒针和刻度标志的绘制,基于save和restore方法旋转画布绘制不同角度的指针: 3.通过font方法实现在画布上绘制 ...

  8. 利用python模拟菜刀反弹shell绕过限制

    有的时候我们在获取到目标电脑时候如果对方电脑又python 编译环境时可以利用python 反弹shell 主要用到python os库和sokect库 这里的服务端在目标机上运行 from sock ...

  9. 提权案例(一)渗透某asp.net网站通过sql server数据库public 提权 思路分享

    先罗列出sql server 角色用户的权限 按照从最低级别角色(bulkadmin)到最高级别角色(sysadmin)的顺序进行描述:1.bulkadmin:这个角色可以运行BULK INSERT语 ...

  10. Python编程系列---装饰器执行的底层原理及流程

    代码中No.1  No.2 ...表示执行流程 """No.1 No.2 ...表示执行流程""" def set_func(func): ...