题意:给定一张无向图,不断从图上删点,询问每次删点后联通块的数量
题解:离线,在删完点后的图上不断加点,用并查集维护联通性。

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;const int MAXN=400000+2;
struct Hash{int u;Hash *next;
}*Tab[MAXN],Mem[MAXN];
int N,M,C,K,P[MAXN],Ans[MAXN],f[MAXN];
bool Flag[MAXN];void Insert(int u,int v){Mem[C].u=v,Mem[C].next=Tab[u];Tab[u]=&Mem[C];C++;
}int Find(int x){ return x==f[x]?x:f[x]=Find(f[x]);}int main(){scanf("%d %d",&N,&M);for(int i=1,u,v;i<=M;i++){scanf("%d %d",&u,&v);Insert(u,v),Insert(v,u);}scanf("%d",&K);for(int i=1;i<=K;i++) scanf("%d",P+i),Flag[P[i]]=1;for(int i=0;i<N;i++) f[i]=i;for(int i=0;i<N;i++)if(!Flag[i]){Ans[K+1]++;for(Hash *p=Tab[i];p;p=p->next)if(!Flag[p->u]){int a=Find(i),b=Find(p->u);if(a!=b) f[a]=b,Ans[K+1]--;}}Ans[K]=Ans[K+1];for(int i=K;i;i--,Ans[i]=Ans[i+1]){Flag[P[i]]=0,Ans[i]++;for(Hash *p=Tab[P[i]];p;p=p->next)if(!Flag[p->u]){int a=Find(P[i]),b=Find(p->u);if(a!=b) f[a]=b,Ans[i]--;}}for(int i=1;i<=K+1;i++) printf("%d\n",Ans[i]);return 0;
}

View Code

转载于:https://www.cnblogs.com/WDZRMPCBIT/p/6443496.html

BZOJ1015 JSOI2008 星球大战starwars 并查集相关推荐

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

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

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

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

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

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

  4. 【JSOI2008】星球大战 (并查集)

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

  5. bzoj1015 [JSOI2008]星球大战 并查集

    对于这种连续删边的问题,可以离线,这样就变成了加边,usaco有类似的题.. 码: #include<iostream> #include<cstdio> #include&l ...

  6. 【BZOJ1015】【JSOI2008】星球大战 并查集

    题目大意 给你一张\(n\)个点\(m\)条边的无向图,有\(q\)次操作,每次删掉一个点以及和这个点相邻的边,求最开始和每次删完点后的连通块个数. \(q\leq n\leq 400000,m\le ...

  7. [JSOI2008]星球大战 并查集

    这一阵子因为好多原因,学习时间有点少,还好时间不算很长. 这两天写了道并查集的题目,感觉不错. 题目描述 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治着整个星系. 某一天,凭着一个偶 ...

  8. 【BZOJ1015】【tyvj3487】星球大战starwar,特别的并查集技巧

    传送门1 传送门2 写在前面:无 思路:比较简单的并查集题目,正着做很难,我们可以倒着想,询问倒着排,相当于每次加入一个星球并把可以连的边都连上,查一下联通块数量就行了 注意:必须两个顶点都没有被摧毁 ...

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

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

最新文章

  1. AI 技术实力图谱全解析!2018 中国 AI 开发者大会重磅来袭
  2. 再见,PyTorch!
  3. Linux下的任务计划
  4. getDimension/getDimensionPixelSize/getDimensionPixelOffset()
  5. IT行业热点商业模式随笔第七章——商业模式创新规律
  6. TP查看已部署的TP框架的版本
  7. [跟我一起涨姿势]未注册服务的RHEL6.4使用网易的CentOS源
  8. Geolocation :基于浏览器的定位服务
  9. 自学成才翁_仅因为您是自学成才,并不意味着您必须独自学习。
  10. RabbitMQ入门学习系列(三).消息发送接收
  11. 重构手法之重新组织数据【1】
  12. mongodb 学习第二天,基本操作
  13. python下载网页内容_使用selenium下载整个html页面内容
  14. 20130408-[转]贴片钽电容的封装、尺寸和标识
  15. Android tips(十)--允许模拟位置在Android M下的坑
  16. 计算机视觉(三)图像拼接
  17. IT男最新躺枪:武汉恋爱培训班教搭讪女孩技巧 学员多为IT男
  18. Shell脚本三种循环
  19. 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
  20. 如何在 微软Microsoft 官网 下载 office365

热门文章

  1. 制作Scary爬虫步骤
  2. JavaScript 模块化七日谈
  3. python的分支结构
  4. react实现汉堡_利用 React 高阶组件实现一个面包屑导航
  5. 【反爬】某网站雪碧图反爬
  6. Matplotlib(一)工作流程
  7. python pickle模块:数据序列化和反序列化
  8. tensorflow 标准数据读取 tfrecords
  9. 蛇形打印数组(某宝典公司面试手撕代码题)
  10. 单变量离散傅里叶变换DFT原理及实现