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 ...
随机推荐
- ubuntu 14.04设备OVS虚拟OpenFlow交换机配置汇总
一.设备OVS sudo apt-get install openvswitch-controller openvswitch-switch openvswitch-datapath-source ( ...
- 开源 自由 java CMS - FreeCMS1.9 分纪录
项目地址:http://www.freeteam.cn/ 2.4.1 积分记录 查看系统全部会员积分记录. 从左側管理菜单点击积分记录进入. 版权声明:本文博客原创文章,博客,未经同意,不得转载.
- hdu1052 Tian Ji -- The Horse Racing 馋
转载请注明出处:http://blog.csdn.net/u012860063 题目链接:pid=1052">http://acm.hdu.edu.cn/showproblem.php ...
- IntelliJ IDEA 问题总结之中的一个 —— jar包、assets、maven、git
因为工作须要,这几天開始弃用eclipse,换idea.用了几天,idea确实有些地方比較方便.可是麻烦也是不少.并且网上相应的资料并没有eclipse那么多,非常多都是自己琢磨解决的,所以想弄个帖子 ...
- android imageButton 透明图片
在Android有许多不规则button.例如: 这个时候,我们假设想做成不规则button的话.第一步就是搞一张边缘透明的png图片,然后用src指定到他.这个时候我们会发现,还没有达到要的效果.还 ...
- 菜鸟版JAVA设计模式-从抽象与实现说桥接模式
桥接模式,初学的时候事实上非常不理解为什么要把这个模式命名为桥接模式,脑海里突然联想到.事实上我学习是一件比較痛苦的事情,由于我必需要知道来龙去脉才干学的进去,所以,非常快我就对这个命名产生了兴趣,桥 ...
- 认识node.js:express(一)
express是node.js官方推荐的框架. 安装 npm install express -g 命令中的 “-g” 表示全局(global) 由于新版本(4.x.x)的express的命令集中到了 ...
- Idea开发环境
Idea开发环境中搭建Maven 1.配置Maven的环境变量 a.首先我们去maven官网下载Maven程序,解压到安装目录,如图所示: b.配置M2_HOME的环境变量,然后将该变量添加到Path ...
- mysql出现Data truncated for column
1.首先叙述,描述你自己的问题. 假设你想把同意为空值的勾去掉.. .恰巧数据库中的数据 processed_f 为空没有值. . . .这时候你对数据表结构做更改的时候就会出现Data trunca ...
- EasyUI禁用控制方法常采用
EasyUI禁用控制方法常采用: 1.validatebox使用可以使用:前两个适用于个人validatebox; 第三适用于整个form内箱; <1>.$("#id& ...