SP5150 JMFILTER - Junk-Mail Filte(并查集)

直秒并查集。这题的难点就在于怎么删点。如果要删的是叶节点,那还好,直接刨掉即可
如果是中间节点甚至是根节点,那就不好办了.....
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(并查集)的更多相关文章
- *HDU2473 并查集
Junk-Mail Filter Time Limit: 15000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- 51nod 1515 明辨是非 并查集 + set + 启发式合并
给n组操作,每组操作形式为x y p. 当p为1时,如果第x变量和第y个变量可以相等,则输出YES,并限制他们相等:否则输出NO,并忽略此次操作. 当p为0时,如果第x变量和第y个变量可以不相等,则输 ...
- hdu 2473 Junk-Mail Filter (并查集之点的删除)
Junk-Mail Filter Time Limit: 15000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- POJ2513——Colored Sticks(Trie树+欧拉回路+并查集)
Colored Sticks DescriptionYou are given a bunch of wooden sticks. Each endpoint of each stick is col ...
- hdoj 2473 Junk-Mail Filter【并查集节点的删除】
Junk-Mail Filter Time Limit: 15000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- HDU 2473 - Junk-Mail Filter ,并查集的删点
Problem Description Recognizing junk mails is a tough task. The method used here consists of two ste ...
- HDU2473 Junk-Mail Filter 【可删除的并查集】
HDU2473 Junk-Mail Filter Problem Description Recognizing junk mails is a tough task. The method used ...
- 【洛谷 P1653】 猴子 (并查集)
题目链接 没删除调试输出,原地炸裂,\(80\)->\(0\).如果你要问剩下的\(20\)呢?答:数组开小了. 这题正向删边判连通性是很不好做的,因为我们并不会并查集的逆操作.于是可以考虑把断 ...
- HDU 2473 Junk-Mail Filter 【并查集删除】
Junk-Mail Filter Time Limit: 15000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
随机推荐
- Android 调用 WebService
1.WebService简介 PS:如果看完上面简介还不是很清楚的话,那么就算了,之前公司就用C#搭的一个WebService! 本节我们并不讨论如何去搭建一个WebService,我们仅仅知道如何去 ...
- spring boot项目下application.properties中使用logging.path和logging.file时的细节
logging.path仅仅用于指定日志输出的目录,且不能指定输出的文件名,且默认名为spring.log 若指定的是相对目录,则会生成在当前总项目的目录下 idea中新建sprnig boot项目 ...
- 【DP合集】m-knapsack
给出 n 个物品,第 i 个物品有重量 w i .现在有 m 个背包,第 i 个背包的限重为 c i ,求最少用几个背 包能装下所有的物品. Input 输入的第一行两个整数 n, m ( n ≤ 2 ...
- thinkphp5框架笔记(ing)
重新整理下学习tp5手册的笔记.自己再好好看一次tp5的开发手册,学到哪里记到哪里. 0x01 安装 Composer安装 ThinkPHP5支持使用Composer安装 curl -sS https ...
- MS12-042 用户态调度机制特权提升漏洞
漏洞编号:MS12-042 披露日期: 2012/6/12 受影响的操作系统:Windows 2000;XP;Server 2003;windows 7;Server 2008; 测试系统:windo ...
- Java8新特性 - Stream API
Stream是Java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找.过滤和映射数据等操作.使用Stream API对集合进行操作,就类似与使用SQL执行的数据库 ...
- 徐明星系列之徐明星创办的OK资本成为RnF金融有限公司的锚定投资者
12月17日,由区块链专家徐明星创办的OK集团的投资部门OK资本宣布,它将成为RnF金融有限公司的锚定投资者.OK集团成立于2012年,创始人徐明星是前豆丁网CTO,从豆丁网离职后,徐明星创办了OK集 ...
- .Net Core3.0依赖注入DI
构建ASP.NET Core应用程序的时候,依赖注入已成为了.NET Core的核心,这篇文章,我们理一理依赖注入的使用方法. 不使用依赖注入 首先,我们创建一个ASP.NET Core Mvc项目, ...
- JVM(2) Java内存溢出异常
在Java虚拟机运行时数据区中,除了程序计数器之外,虚拟机栈.本地方法栈.方法区和Java堆都有发生OutOfMemoryError(简称OOM)异常的可能. 一.Java堆溢出 Java堆用于存储对 ...
- bootstrap网格系统.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...