Hdu 2473(并查集删除操作) Junk-Mail Filter
有木有非常吊
加强
。。。
。
。。
也就是说已经成功的把它删除了,他已经属于还有一个集合了
- #include <stdio.h>
- #include <string.h>
- #define N 100001
- #define M 1000001
- int par[N+M+50];
- int repplace[N+50];
- int flag[N+M];
- int ind;
- void init(int n )
- {
- for(int i=0;i<n;i++)
- {
- par[i]=i;
- repplace[i]=i;
- }
- ind =n;
- }
- int findset(int n)
- {
- if(n==par[n])
- return n;
- else
- return par[n]=findset(par[n]);
- }
- void unite(int n,int m)
- {
- int pn=findset(n);
- int pm=findset(m);
- if(pn!=pm)
- par[pn]=pm;
- }
- void Delete(int n)//删除操作。
- {
- repplace[n]=ind;
- par[ind]=ind;
- ind++;
- }
- int main()
- {
- int a,b;
- char s[3];
- int x,y;
- int cas=0;
- while(scanf("%d%d",&a,&b)==2)//我一直纠结为什莫会WA。推断输入的控制条件错了
- {
- if(a==0&&b==0)
- break;
- init(a);
- for(int i=0;i<b;i++)
- {
- scanf("%s",s);
- if(s[0]=='M')
- {
- scanf("%d%d",&x,&y);
- unite(repplace[x],repplace[y]);
- }
- else
- {
- scanf("%d",&x);
- Delete(x);
- }
- }
- memset(flag,0,sizeof(flag));
- int ans=0;
- for(int i=0;i<a;i++)//推断他们有几个集合
- {
- int hh=findset(repplace[i]);
- if(!flag[hh])
- {
- flag[hh]=1;
- ans++;
- }
- }
- printf("Case #%d: %d\n",++cas,ans);
- }
- }
其他就不做介绍了,仅仅要会并查集的一般能看懂看懂。看不懂可评论。或发私信。。。
。
。。
Hdu 2473(并查集删除操作) Junk-Mail Filter的更多相关文章
- HDU2473 Junk-Mail Filter - 并查集删除操作(虚父节点)
传送门 题意: 每次合并两份邮件,或者将某一份邮件独立出来,问最后有多少个邮件集合. 分析: 考虑初始化每个节点的祖先为一个虚父节点(i + n),虚父节点指向它自己.这样可以进行正常的合并操作. 而 ...
- hdu 2473 并查集
思路:每次合并时,都是给一个虚拟的根. #include<map> #include<Set> #include<cmath> #include<queue& ...
- hdu 2473 并差集的删除操作
虚拟数组 待定/.#include<iostream> #include<algorithm> #include<set> using namespace std; ...
- hdu 4514 并查集+树形dp
湫湫系列故事——设计风景线 Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tot ...
- HDU 3926 并查集 图同构简单判断 STL
给出两个图,问你是不是同构的... 直接通过并查集建图,暴力用SET判断下子节点个数就行了. /** @Date : 2017-09-22 16:13:42 * @FileName: HDU 3926 ...
- HDU 4496 并查集 逆向思维
给你n个点m条边,保证已经是个连通图,问每次按顺序去掉给定的一条边,当前的连通块数量. 与其正过来思考当前这边会不会是桥,不如倒过来在n个点即n个连通块下建图,检查其连通性,就能知道个数了 /** @ ...
- 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~ ...
- 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) ...
随机推荐
- 【Xamarin挖墙脚系列:Xamarin.IOS机制原理剖析】
原文:[Xamarin挖墙脚系列:Xamarin.IOS机制原理剖析] [注意:]团队里总是有人反映卸载Xamarin,清理不完全.之前写过如何完全卸载清理剩余的文件.今天写了Windows下的批命令 ...
- 添加service到SystemService硬件服务
添加service到SystemService: 添加硬件服务. 创建时间:2015年3月9日(星期一) 晚上11:07 | 分类:硬件驱动Android | 天气: 修改时间:2015年3月10日( ...
- XSD标准架构-----<xsd:element> 元素详解
声明一个元素. <element abstract = Boolean : false block = (#all | List of (extension | restriction ...
- bzoj1046
首先这肯定是一道LIS的变形,这次求的是方案,还要求字典序最小 (注意这个字典序最小是指下标最小而不是数最小) 首先预处理以每个数为首,能组成多长的上升序列(这里我们用单调队列解决) 然后按照位置顺序 ...
- 阿里云数加平台——BI报表使用概述和总结
先声明一点,本人写此文章初衷只为对前段时间的工作做些总结,并做个记录,以备日后查用,此外也顺便与他人分享一下.当然间接上也为阿里云的大数据平台做了个免费广告.以下开始正文. 首先进入数加服务的控制面板 ...
- breakpoints、lldb 和 chisel 的使用
http://www.cocoachina.com/ios/20150803/12805.html Breakpoints BreakPoint分类 breakpoint也是有分类的,我这里的文章内大 ...
- winhex的使用
1. 当我们用VC编写代码,将数据写入到磁盘的文件后,用winhex查看,winhex可以检测文件最后写入时间的变动,如果有变动,则会提示“此文件的最后写入时间已经改变.解除当前状态并重新载入吗?”, ...
- web网站加速之CDN(Content Delivery Network)技术原理
在不同地域的用户访问网站的响应速度存在差异,为了提高用户访问的响应速度.优化现有Internet中信息的流动,需要在用户和服务器间加入中间层CDN. 使用户能以最快的速度,从最接近用户的地方获得所需的 ...
- 从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件
一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些许秘籍. 本文是介绍两个最常用的jQuery插件. 分别用 ...
- Java数值转化为二进制、十进制、十六进制字符串
int i = 123;String binStr = Integer.toBinaryString(i); String otcStr = Integer.toOctalString(i); Str ...