洛谷 1197 [JSOI2008]星球大战
2024-08-30 18:29:30
【题解】
把询问离线,倒着加点,并查集维护连通性即可。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#define LL long long
#define rg register
#define N 400010
using namespace std;
int n,m,k,cnt,tot,last[N],fa[N],q[N],ans[N];
bool v[N];
struct edge{int to,pre;}e[N<<];
inline int read(){
int k=,f=; char c=getchar();
while(c<''||c>'')c=='-'&&(f=-),c=getchar();
while(''<=c&&c<='')k=k*+c-'',c=getchar();
return k*f;
}
int find(int x){return fa[x]==x?x:fa[x]=find(fa[x]);}
int main(){
n=read(); m=read();
for(rg int i=;i<=n;i++) fa[i]=i;
for(rg int i=;i<=m;i++){
int u=read()+,v=read()+;
e[++tot]=(edge){u,last[v]}; last[v]=tot;
e[++tot]=(edge){v,last[u]}; last[u]=tot;
}
k=read();
for(rg int i=;i<=k;i++) v[q[i]=read()+]=;
for(rg int now=;now<=n;now++)if(!v[now]){
cnt++;
for(rg int i=last[now],to;i;i=e[i].pre)if(!v[to=e[i].to]){
if(find(now)!=find(to)){
fa[find(now)]=find(to);
cnt--;
}
}
}
ans[k+]=cnt;
for(rg int j=k;j;j--){
int now=q[j];
cnt++; v[now]=;
for(rg int i=last[now],to;i;i=e[i].pre)if(!v[to=e[i].to]){
if(find(now)!=find(to)){
fa[find(now)]=find(to);
cnt--;
}
}
ans[j]=cnt;
}
for(rg int i=;i<=k+;i++) printf("%d\n",ans[i]);
return ;
}
最新文章
- iOS逆向工程之Hopper中的ARM指令
- php中的抽象类(abstract class)和接口(interface)
- Node.js的net模块
- Java 中常用缓存Cache机制的实现
- jeecg的cq查询方式
- ZOJ 3329 One Person Game 概率DP 期望 难度:2
- Android之使用AchartEngineActivity引擎绘制柱状图、曲线图
- Ext入门学习系列(二)弹出窗体
- Java经典面试题
- 写一个产生16位纯数字唯一 ID 的方法,要求时间因素的介入。(不要求绝对唯一,在一定的时空中重复机率很小即可)
- FreeRTOS——内存管理
- iOS开发 字符串的转化 小技巧
- windows10安装anaconda,配置tensorflow
- Spring(转载二)
- Python_os模块
- IBatisNet不常用到的配置(Dao.config ConnectionTimeout),居然不起作用(前辈留给我们的坑)
- 显示实现接口的好处c#比java好的地方
- Redis学习笔记:windows上redis的安装运行
- 代码收藏系列--php--生成简短唯一订单号(转载)
- linux常用命令:find命令之xargs
热门文章
- NOIp 2017 奶酪 【并查集】 By cellur925
- SqlParameter 的使用
- flask请求访问数据
- JDK与JRE、JVM三者间的关系及JDK的安装部署
- 字符串处理 Codeforces Round #285 (Div. 2) B. Misha and Changing Handles
- Base64编码与解码 分类: 中文信息处理 2014-11-03 21:58 505人阅读 评论(0) 收藏
- windows8.1专业版 关闭ie11总是已停止工作
- XML读取的小例子
- webstorm里直接调用命令行
- CREATE CONVERSION - 定义一个用户定义的码制转换