并查集

正序处理时间复杂度为n^2,考虑逆序处理,这样,时间复杂度从n^2降为nlogn

附上代码:

  1. #include <cstdio>
  2. #include <algorithm>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <cstdlib>
  6. #include <iostream>
  7. #include <queue>
  8. using namespace std;
  9. #define N 400005
  10. int fa[N<<1],n,m,K,head[N<<1],cnt,q[N],ans[N];
  11. struct node
  12. {
  13. int to,next;
  14. }e[N<<1];
  15. void add(int x,int y)
  16. {
  17. e[cnt].to=y;
  18. e[cnt].next=head[x];
  19. head[x]=cnt++;
  20. return ;
  21. }
  22. int find(int x)
  23. {
  24. int p=x,t;
  25. while(fa[p]!=p)p=fa[p];
  26. while(x!=p)t=fa[x],fa[x]=p,x=t;
  27. return p;
  28. }
  29. bool vis[N];
  30. int main()
  31. {
  32. for(int i=1;i<N;i++)fa[i]=i;
  33. memset(head,-1,sizeof(head));
  34. memset(vis,1,sizeof(vis));
  35. scanf("%d%d",&n,&m);
  36. for(int i=1;i<=m;i++)
  37. {
  38. int x,y;
  39. scanf("%d%d",&x,&y);
  40. x++,y++;
  41. add(x,y);
  42. add(y,x);
  43. }
  44. scanf("%d",&K);
  45. ans[K]=n-K;
  46. for(int i=1;i<=K;i++)
  47. {
  48. scanf("%d",&q[i]);
  49. q[i]++;
  50. vis[q[i]]=0;
  51. }
  52. for(int i=1;i<=n;i++)
  53. {
  54. if(!vis[i])continue;
  55. for(int j=head[i];j!=-1;j=e[j].next)
  56. {
  57. int to1=e[j].to;
  58. if(!vis[to1])continue;
  59. int fx=find(i),fy=find(to1);
  60. if(fx!=fy)
  61. {
  62. fa[fx]=fy;
  63. ans[K]--;
  64. }
  65. }
  66. }
  67. vis[q[K]]=1;
  68. for(int i=K-1;i>=0;i--)
  69. {
  70. ans[i]=ans[i+1]+1;
  71. for(int j=head[q[i+1]];j!=-1;j=e[j].next)
  72. {
  73. int to1=e[j].to;
  74. if(!vis[to1])continue;
  75. int fx=find(q[i+1]),fy=find(to1);
  76. if(fx!=fy)
  77. {
  78. fa[fx]=fy;
  79. ans[i]--;
  80. }
  81. }
  82. vis[q[i]]=1;
  83. }
  84. for(int i=0;i<=K;i++)
  85. {
  86. printf("%d\n",ans[i]);
  87. }
  88. return 0;
  89. }

  

[JSOI2008]星球大战starwar BZOJ1015的更多相关文章

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

    1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec  Memory Limit: 162 MBSubmit: 5253  Solved: 2395[Submit ...

  2. bzoj1015:1015: [JSOI2008]星球大战starwar

    应该是全部读入之后再添加边用并查集就可以了. yyl用空间换时间.u[]v[]等将边预存起来. #include<cstdio> #include<cstring> #incl ...

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

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

  4. [Bzoj1015][JSOI2008]星球大战starwar(并查集)(离线处理)

    1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec  Memory Limit: 162 MBSubmit: 6849  Solved: 3204[Submit ...

  5. 1015: [JSOI2008]星球大战starwar

    1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec Memory Limit: 162 MB Description 很久以前,在一个遥远的星系,一个黑暗的帝国 ...

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

    1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec  Memory Limit: 162 MBSubmit: 2124  Solved: 909[Submit] ...

  7. BZOJ 1015: [JSOI2008]星球大战starwar 并查集

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

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

    1015: [JSOI2008]星球大战starwar 题意:一个点数为N(1<= 40w),边数为M(1<=20w)的图,总共删除k个节点,问开始以及每次删除一个节点之后图的连通块数? ...

  9. BZOJ 1015 [JSOI2008]星球大战starwar

    1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec  Memory Limit: 162 MBSubmit: 3551  Solved: 1581[Submit ...

随机推荐

  1. N-Queens(N皇后问题)

    题目: The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two que ...

  2. vue-cli的webpack模版,相关配置文件dev-server.js与webpack.config.js配置解析

    1.下载vue-cli npm install vue-cli -g vue-cli的使用与详细介绍,可以到github上获取https://github.com/vuejs/vue-cli 2.安装 ...

  3. Ueditor1.3.6 setContent的一个bug

    Baidu Uedtior这个版本的占位标签为script标签,UE.get("editor")操作初始化编辑器,这个初始化动作似乎是个异步动作,在这个语句之后如果setConte ...

  4. Python循环依赖问题的解决

    一个是把某个import移到代码中间,使原先的循环依赖圈打开.

  5. Java main方法全解

    1.main方法的重载 package cn.nxl2018; public class Main_test { public static void main(String args[]) { Sy ...

  6. SVD的概念以及应用

    第十四章 利用SVD简化数据 一.引言 SVD的全称是奇异值分解,SVD的作用是它能够将高维的数据空间映射到低维的数据空间,实现数据约减和去除噪声的功能. SVD的特点主要有以下几个方面: 1.它的优 ...

  7. 简明4步,让Python的好朋友Pycharm变得更加雅观!

    跟着人工智能/机械学习的兴起,Python再次取得广泛程序员的关注.而JetBrains出品的PyCharm无疑是最好用的Python IDE之一. 把本身的IDE装备安排得既有逼格又雅观,这是每个P ...

  8. FastDFS单机版安装

    FastDFS 分布式文件系统 1 目标 了解项目中使用FastDFS的原因和意义. 掌握FastDFS的架构组成部分,能说出tracker和storage的作用. 了解FastDFS+nginx上传 ...

  9. Java并发之ReentrantReadWriteLock

    上篇文章简单的介绍了ReentrantLock可重入锁.事实上我们可以理解可重入锁是一种排他锁,排他锁在同一个时刻只能够由一个线程进行访问.这就与我们实际使用过程中有点不想符合了,比如说当我们进行读写 ...

  10. msql索引

    从网上找了两种解决方案: 最近要给一个表加一个联合唯一索引,但是表中的两个联合健有重复值,导致无法创建: 解决方案一:ignore(会删除重复的记录(重复记录只保留一条,其他的删除),然后建立唯一索引 ...