BZOJ 1015 JSOI2008 星球大战 starwar 并检查集合
标题效果:给定一个无向图。联通谋求块的数目,以及k一个点的破坏后每次;联通,块的数目
侧面和摧毁的地步全记录,我们可以做相反的。
需要注意的是该点不能算作破坏联通块
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define M 400400
using namespace std;
struct abcd{
int to,next;
}table[M];
int head[M],tot;
int n,m,q;
int fa[M],stack[M],destroy[M],top,now;
bool destroyed[M];
int Find(int x)
{
if(!fa[x]||fa[x]==x)
return fa[x]=x;
return fa[x]=Find(fa[x]);
}
inline void Unite(int x,int y)
{
int fx=Find(x);
int fy=Find(y);
if(fx==fy)
return ;
--now;
fa[fy]=fx;
}
inline void Add(int x,int y)
{
table[++tot].to=y;
table[tot].next=head[x];
head[x]=tot;
}
int main()
{
int i,j,x,y;
cin>>n>>m;
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
++x;++y;
Add(x,y);
Add(y,x);
}
cin>>q;
for(i=1;i<=q;i++)
{
scanf("%d",&destroy[i]);
++destroy[i];
destroyed[destroy[i]]=1;
}
now=n-q;
for(j=1;j<=n;j++)
if(!destroyed[j])
for(i=head[j];i;i=table[i].next)
if(!destroyed[table[i].to])
Unite(j,table[i].to);
stack[++top]=now;
for(j=q;j;j--)
{
x=destroy[j];
destroyed[x]=0;
++now;
for(i=head[x];i;i=table[i].next)
if(!destroyed[table[i].to])
Unite(x,table[i].to);
stack[++top]=now;
}
while(top)
printf("%d\n",stack[top--]);
}
版权声明:本文博主原创文章,博客,未经同意不得转载。
BZOJ 1015 JSOI2008 星球大战 starwar 并检查集合的更多相关文章
- BZOJ 1015: [JSOI2008]星球大战starwar 并查集
1015: [JSOI2008]星球大战starwar Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝 ...
- BZOJ 1015 [JSOI2008]星球大战starwar
1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 3551 Solved: 1581[Submit ...
- bzoj 1015: [JSOI2008]星球大战starwar (逆向思维+并查集)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1015 思路: 题目是要我们对当前图拆掉k个点,问,每拆一个点后图中有多少个联通块,我们可以逆 ...
- BZOJ 1015: [JSOI2008]星球大战starwar(并查集求连通块+离线处理)
http://www.lydsy.com/JudgeOnline/problem.php?id=1015 题意: 思路:好题啊!!! 这道题目需要离线处理,先把所有要删的点给保存下来,然后逆序加点,这 ...
- BZOJ 1015: [JSOI2008]星球大战starwar【并查集】
题目可以表述成:给定一个无向图G,每次删除它的一个点和与点相关的边集,每次询问该操作后图G的连通度(连通分量的个数).和上一题一样都是考察逆向思维,虽然删除点的做法不会,但是每次加点后询问连通度却是并 ...
- 【BZOJ】1015: [JSOI2008]星球大战starwar
1015: [JSOI2008]星球大战starwar 题意:一个点数为N(1<= 40w),边数为M(1<=20w)的图,总共删除k个节点,问开始以及每次删除一个节点之后图的连通块数? ...
- 1015: [JSOI2008]星球大战starwar
1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec Memory Limit: 162 MB Description 很久以前,在一个遥远的星系,一个黑暗的帝国 ...
- [1015][JSOI2008]星球大战starwar(并查集)
1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 2124 Solved: 909[Submit] ...
- bzoj1015:1015: [JSOI2008]星球大战starwar
应该是全部读入之后再添加边用并查集就可以了. yyl用空间换时间.u[]v[]等将边预存起来. #include<cstdio> #include<cstring> #incl ...
随机推荐
- PHP图像处理:3D图纸、缩放、回转、剪下、水印(三)
来源:http://www.ido321.com/887.html 5.PHP对图像的旋转 1: <div> 2: <h4>旋转之前</h4> 3: <img ...
- Fitnesse用系列三
动态决策表 动态决策表是新出,版本号到今年年初还没有了.我看了看文档和演示文稿样本,其效果是作为一种辅助通用决策表.它不是easy匹配的名称和发射.但假设只有一个或两个参数.不管名字怎么都找不到,这并 ...
- oracle错误之 ora-01017
ora-01017 现象描述: scott用户和其它建立的用户,都登的上.但sys和system用户登录不上 方案一(试过,不行): 1,打开目录:F:\app\Administrator\produ ...
- QoS令牌桶工作原理
QoS的一个重要作用就是对port流量进行监管,也就是限制port流量.但QoS是怎样做到这点的呢?那就是QoS的令牌桶机制了.以下是在笔者刚刚出版的<Cisco/H3C交换机高级配置与管理技术 ...
- android AlarmManager采用
Android的闹钟实现机制非常easy, 仅仅须要调用AlarmManager.Set()方法将闹钟设置提交给系统,当闹钟时间到后,系统会依照我们的设定发送指定的广播消息.我们写一个广播去接收消息做 ...
- 引用第三方框架 不支持ARC
我们会常常遇到一个问题就是引用第三方框架之后发现不支持内存的自己主动处理(ARC) 我们须要这样来操作: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdT ...
- 可以部署在广域网执行QQ高仿版 GG2014 (源代码)
距上次GG V3.7版本号(可在广域网部署执行的QQ高仿版 -- GG叽叽V3.7.优化视频聊天.控制很多其它相关细节)的公布.已经有50天了,这50天对于GG来说.是一个重大的飞跃. 由于这段时 ...
- centos 彻底删除nodejs默认的安装文件
1> yum remove nodejs npm -y 2> cd /usr/local/lib 移除所有 node 和 node_modules目录 cd /usr/local/in ...
- C# winform 实现 qq 在屏幕边缘 自动隐藏 鼠标移过去 移上去 又自动显示
代码下载地址 http://download.csdn.net/detail/simadi/7677147
- atitit.(设计模式1)--—职责链(chain of responsibility)最佳实践O7 转换日期
atitit.设计模式(1)---职责链模式(chain of responsibility)最佳实践O7 日期转换 1. 需求:::日期转换 1 2. 能够选择的模式: 表格模式,责任链模式 1 3 ...