1015: [JSOI2008]星球大战starwar

Time Limit: 3 Sec  Memory Limit: 162 MB
Submit: 6230  Solved: 2909
[Submit][Status][Discuss]

Description

  很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系。某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球。这些星球通过特殊的以太隧道互相直接或间接地连接。 但好景不长,很快帝国又重新造出了他的超级武器。凭借这超级武器的力量,帝国开始有计划地摧毁反抗军占领的星球。由于星球的不断被摧毁,两个星球之间的通讯通道也开始不可靠起来。现在,反抗军首领交给你一个任务:给出原来两个星球之间的以太隧道连通情况以及帝国打击的星球顺序,以尽量快的速度求每一次打击之后反抗军占据的星球的连通快的个数。(如果两个星球可以通过现存的以太通道直接或间接地连通,则这两个星球在同一个连通块中)。

Input

  输入文件第一行包含两个整数,N (1  < =  N  < =  2M) 和M (1  < =  M  < =  200,000),分别表示星球的
数目和以太隧道的数目。星球用 0 ~ N-1的整数编号。接下来的M行,每行包括两个整数X, Y,其中(0 < = X,Y)表示星球x和星球y之间有“以太”隧道,可以直接通讯。接下来的一行为一个整数k,表示将遭受攻击的星的
数目。接下来的k行,每行有一个整数,按照顺序列出了帝国军的攻击目标。这k个数互不相同,且都在0到n-1的范围内。

Output

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

Sample Input

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

Sample Output

1
1
1
2
3
3

不停删边,每次删完之后问你有多少联通快

把操作反过来就成了不停地加边啦,很简单的并查集

#include<stdio.h>
#include<string.h>
#include<vector>
using namespace std;
vector<int> G[400005];
int ans[400005], dt[400005], ufs[400005], flag[400005];
int Find(int x)
{if(ufs[x]==0)return x;return ufs[x] = Find(ufs[x]);
}
int main(void)
{int n, m, i, j, t1, t2, x, y, k, sum;while(scanf("%d%d", &n, &m)!=EOF){for(i=1;i<=n;i++)G[i].clear();memset(ufs, 0, sizeof(ufs));for(i=1;i<=m;i++){scanf("%d%d", &x, &y);x++, y++;G[x].push_back(y);G[y].push_back(x);}scanf("%d", &k);memset(flag, 0, sizeof(flag));for(i=1;i<=k;i++){scanf("%d", &dt[i]);dt[i]++;flag[dt[i]] = 1;}sum = n;for(i=1;i<=n;i++){if(flag[i])continue;for(j=0;j<G[i].size();j++){x = G[i][j];if(flag[x])continue;t1 = Find(i);t2 = Find(x);if(t1!=t2){sum--;ufs[t1] = t2;}}}ans[k] = sum;for(i=k;i>=1;i--){flag[dt[i]] = 0;for(j=0;j<G[dt[i]].size();j++){x = G[dt[i]][j];if(flag[x])continue;t1 = Find(dt[i]);t2 = Find(x);if(t1!=t2){ufs[t1] = t2;sum--;}}ans[i-1] = sum;}for(i=0;i<=k;i++)printf("%d\n", ans[i]-i);}return 0;
}

bzoj 1015: [JSOI2008]星球大战starwar相关推荐

  1. BZOJ 1015 [JSOI2008]星球大战starwar (逆序并查集)

    BZOJ 1015 思路:并查集只有联边的作用,无法做到拆边,因此采取逆序做法.先将边拆掉,再用并查集进行联边,不同联通块相连则联通块数目减一. 1 #include<bits/stdc++.h ...

  2. bzoj 1015 [JSOI2008]星球大战starwar

    逆向考虑,先看作所有星球都被摧毁,然后恢复星球. 连通块个数用并查集维护,每次恢复不能算被毁掉的星球. #include<cstdio> #include<vector> us ...

  3. 【BZOJ】1015 [JSOI2008]星球大战starwar(并查集+离线处理)

    Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的 机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通 ...

  4. 【BZOJ 1015】 [JSOI2008]星球大战starwar

    1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec   Memory Limit: 162 MB Submit: 3050   Solved: 1353 [ S ...

  5. BZOJ1015 [JSOI2008]星球大战starwar(并查集)

    1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec  Memory Limit: 162 MB Submit: 3895  Solved: 1750 [Subm ...

  6. [BZOJ1015] [JSOI2008] 星球大战starwar (并查集)

    Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的 机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通 ...

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

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

  8. BZOJ 1015 题解

    1015: [JSOI2008]星球大战starwar Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的 机遇,一支反抗军摧毁了 ...

  9. BZOJ 1567: [JSOI2008]Blue Mary的战役地图

    二次联通门 : BZOJ 1567: [JSOI2008]Blue Mary的战役地图 /*BZOJ 1567: [JSOI2008]Blue Mary的战役地图社会我栋哥人怂P话多暴力能A题正解能W ...

最新文章

  1. php轮播代码生成器,最简单的Banner轮播左右切换效果代码及实现思路(附带源码)...
  2. 成绩统计自动计算表格_电气计算太慢?62套自动计算EXCEL表格,一键下载秒出结果...
  3. vue入门总结(3)
  4. 分享一个java对xml,excel,jdbc.properties,读写文件,读写图片等实现(1)
  5. hashMap与arrayList,linkedList,hashTable的区别
  6. 8086汇编基础 push,pop指令执行时,sp怎么变
  7. 理解向日葵甘特之六——定义数据列
  8. 大势要落地!开发者应该关注的 AI 应用落地实践
  9. ps、ai、cdr2021平面设计三大软件的区别有哪些?
  10. Fortran入门教程(一)——引入篇
  11. 英语口语常用1368词汇
  12. python缩进块是什么,Python块缩进
  13. Learning to Filter: Siamese Relation Network for Robust Tracking 论文笔记
  14. 装机不求人,10 分钟完成电脑配置挑选
  15. PAT乙 1015 德才论 C++
  16. 删除表中的一个列名字段表出现如下情况
  17. LTD营销SaaS产品-官微名片介绍
  18. 【控制系统数字仿真与CAD——实验报告】实验四:黄金分割法最优化PI调节器参数(文末附完整代码 + 实验结果)
  19. 诱饵扫描_这是标题点击诱饵吗
  20. 通过tasker上传手机电量到domoticz中,电量过低时,自动充电

热门文章

  1. python编程入门第3版pdf-Python编程入门第三版
  2. python中文视频教程-鱼C零基础入门 Python中文视频教程
  3. 语音情感识别研究进展综述
  4. 免费语音识别_免费 语音识别_免费语音识别api - 云+社区 - 腾讯云
  5. 语音识别合成助手-语音识别合成助手下载 v20190223免费版--pc6下载站
  6. 谷歌开放语音识别 API,发力人工智能
  7. java ip地址转数字_ip地址与整数相互转换
  8. grafana zabbix 模板_【Grafana教程】安装Grafana并配置Zabbix数据源
  9. websettings 哪里设置_江阴整站优化哪里好
  10. mysql代码的核心类_mysql源码---核心类 (1)线程类