原题链接:https://www.luogu.com.cn/problem/P1197

星球大战

题目描述

很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治着整个星系。

某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球。这些星球通过特殊的以太隧道互相直接或间接地连接。

但好景不长,很快帝国又重新造出了他的超级武器。凭借这超级武器的力量,帝国开始有计划地摧毁反抗军占领的星球。由于星球的不断被摧毁,两个星球之间的通讯通道也开始不可靠起来。

现在,反抗军首领交给你一个任务:给出原来两个星球之间的以太隧道连通情况以及帝国打击的星球顺序,以尽量快的速度求出每一次打击之后反抗军占据的星球的连通块的个数。(如果两个星球可以通过现存的以太通道直接或间接地连通,则这两个星球在同一个连通块中)。

输入格式

输入文件第一行包含两个整数,n,mn,mn,m,分别表示星球的数目和以太隧道的数目。星球用 0∼n−10 \sim n-10∼n−1的整数编号。

接下来的 mmm 行,每行包括两个整数 x,yx,yx,y,表示星球 xxx 和星球 yyy 之间有 “以太” 隧道,可以直接通讯。

接下来的一行为一个整数 kkk ,表示将遭受攻击的星球的数目。

接下来的 kkk 行,每行有一个整数,按照顺序列出了帝国军的攻击目标。这 kkk 个数互不相同,且都在 000 到 n−1n-1n−1 的范围内。

输出格式

第一行是开始时星球的连通块个数。接下来的 kkk 行,每行一个整数,表示经过该次打击后现存星球的连通块个数。

输入输出样例
输入 #1

8 13
0 1
1 6
6 5
5 0
0 6
1 2
2 3
3 4
4 5
7 1
7 2
7 6
3 6
5
1
6
3
5
7

输出 #1

1
1
1
2
3
3

说明/提示
【数据范围】

对于 100%100\%100% 的数据,1≤m≤2×1051\le m \le 2\times 10^51≤m≤2×105,1≤n≤2m1\le n \le 2m1≤n≤2m,x≠yx \neq yx​=y。

[JSOI2008]

题解

正向摧毁星球时维护过于艰难(或许需要LCT\mathcal{LCT}LCT?),不如离线反向生成星球做一个并查集。

每次添加星球时遍历所有与它连接且存在的星球,检查是否在一个连通块内,不在则连接并使连通块数量−1-1−1。

代码

退役老咸鱼含泪复习带路径压缩并查集,并因为数组开小了错失1A1A1A……

#include<bits/stdc++.h>
using namespace std;
const int M=4e5+5;
int n,m,k,que[M],dad[M],ans[M];
bool des[M];
vector<int>edg[M];
void in()
{scanf("%d%d",&n,&m);for(int i=1,a,b;i<=m;++i)scanf("%d%d",&a,&b),edg[a].push_back(b),edg[b].push_back(a);scanf("%d",&k);for(int i=1;i<=k;++i)scanf("%d",&que[i]),des[que[i]]=1;
}
int root(int v)
{int f=v;for(;dad[f]!=f;f=dad[f]);for(;dad[v]!=v;v=dad[v])dad[v]=f;return f;
}
int add(int v)
{des[v]=0;int cot=0;for(int i=edg[v].size()-1;i>=0;--i)if(!des[edg[v][i]]&&root(edg[v][i])!=root(v))++cot,dad[root(edg[v][i])]=root(v);return cot;
}
void ac()
{for(int i=0;i<n;++i)dad[i]=i;for(int i=0;i<n;++i)if(!des[i])for(int j=edg[i].size()-1;j>=0;--j)if(!des[edg[i][j]]&&root(i)!=root(edg[i][j]))dad[root(i)]=root(edg[i][j]);for(int i=0;i<n;++i)if(!des[i]&&root(i)==i)++ans[k];for(int i=k-1;i>=0;--i)ans[i]=ans[i+1]-add(que[i+1])+1;for(int i=0;i<=k;++i)printf("%d\n",ans[i]);
}
int main(){in(),ac();}

Luogu1197 星球大战相关推荐

  1. 《星球大战:前线2》预告片发布

    可能大家都知道,即将发布的<星球大战:前线2>中将有一个专门的单人游戏模式,但是,这个单一玩家模式到底会包括什么内容,这还是个谜.上周末,EA在PlayStation博客上甩过来了一个新的 ...

  2. 抓取html中用到的css_如何使用HTML和CSS制作像《星球大战》一样的抓取文字

    抓取html中用到的css The opening to Star Wars is iconic. The effect of text scrolling both up and away from ...

  3. 专题突破三之并查集Ⅱ——星球大战,In Touch,方格染色,Junk-Mail Filter,关押罪犯,Silver Woods,Must Be Rectangular!

    文章目录 [JSOI2008]星球大战 In Touch 方格染色 Junk-Mail Filter [NOIP2010 提高组] 关押罪犯 Silver Woods Must Be Rectangu ...

  4. 配置中文_星球大战:战机中队配置需求公布 支持中文

    近日<星球大战>系列新作<星球大战:战机中队>公布,该作采用寒霜引擎打造,支持中文.游戏将于2020年10月3日发售,预购价格为238元,登陆Xbox One/PS4/PC(S ...

  5. python爬虫实战:《星球大战》豆瓣影评分析

    #################更新于2018.2.2.彻底搞定小问题.开心############################ ''' Windows 7 系统 Sublime text 编辑 ...

  6. 洛谷 p1197 [JSOI2008]星球大战(并查集)

    洛谷 P1197 [JSOI2008]星球大战 题目描述 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了 ...

  7. 【BZOJ】【1015】 【JSOI2008】星球大战starwar

    并查集/时光倒流 删点维护连通块个数比较难处理,所以我们就逆序来做,先处理最后状态下有多少连通块,再依次加入被删的点,这样就变删点为加点,利用并查集即可维护连通块个数. 1 /************ ...

  8. Disney牵手联想发布AR头显,还有配备激光剑的AR游戏《星球大战》

    联想和迪士尼要让玩家体验绝地武士的快感. 近日的D23展会上,迪士尼和联想共同宣布了一款移动AR头戴设备,以及一款AR版的<星球大战>游戏. 据了解,这一款AR头戴设备由迪士尼与联想.卢卡 ...

  9. 13 登陆_《星球大战:弹珠台》中文版即将登陆Switch 12月13日正式发售

    日前,发行商Game Source Entertainment宣布,由Zen Studios开发<星球大战:弹珠台>Switch简/繁体中文版,将在12月13日正式发售. 本作是第一款将于 ...

最新文章

  1. 详细的聊聊接口性能优化的11个小技巧 不收藏对不起我
  2. richtextbox自动滚动到最下面_工业自动化直线运动部件大全,导轨、轴承、衬套、丝杠、导向轴简介说明...
  3. OrchardCore 如何实现模块化( Modular )和 Multi-Tenancy
  4. 分布与并行计算—日志挖掘(Java)
  5. linux shell 原理,linux下shell的工作原理
  6. 车贷P2P平台设计市场需求文档(MRD)
  7. 你有真正理解 Java 的类加载机制吗?| 原力计划
  8. 因未交赎金,世界航天巨头机密文档遭勒索软件公开
  9. 2019澳门理工计算机作品决赛,我校学子在2019年泛珠三角+大学生计算机作品赛总决赛中斩获佳绩...
  10. 2014C++A:蚂蚁感冒(数组+判断)
  11. Makefile.am、Makefile.in、Makefile、configure.ac关系(十二)
  12. Android Studio 插件——《阿里巴巴 Java 开发规约》的扫描插件
  13. paip.目录文件列表排序算法
  14. WOMic 使用wifi 将手机作为电脑麦克风音频输入
  15. [笔记分享] [Camera] msm8926 camera hal 流程小结
  16. 怀旧服服务器物品栏在哪里,魔兽世界怀旧服:祈福服务器的真实情况,装备不贵,玩家确实不多...
  17. C语言——恶搞关机小程序
  18. 警惕分布式常见的这十大坑
  19. word中交叉引用多篇参考文献格式[1-2]操作以及显示错误问题
  20. H5打开支付宝小程序

热门文章

  1. PPT扁平化设计总结
  2. python选取特定行_pandas实现选取特定索引的行
  3. Vue组件编写之Alert提示框组件编写
  4. 中国互联网微博生死局及商业价值分析
  5. 联想笔记本声音太小怎么办_笔记本声音太小,详细教您笔记本电脑声音太小解决方法...
  6. 微信小程序如何设置背景图片
  7. 上方网首发:TestBird《2015年度手游测试白皮书》
  8. 如何快速搭建在家里(外网)也能访问的云办公云桌面系统
  9. java 异或 排序_Java的位运算符详解实例——与()、非(~)、或(|)、异或(^)...
  10. 计算机网恢,电脑附身