博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[JSOI2008]星球大战starwar BZOJ1015
阅读量:6451 次
发布时间:2019-06-23

本文共 879 字,大约阅读时间需要 2 分钟。

并查集

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

附上代码:

#include 
#include
#include
#include
#include
#include
#include
using namespace std;#define N 400005int fa[N<<1],n,m,K,head[N<<1],cnt,q[N],ans[N];struct node{ int to,next;}e[N<<1];void add(int x,int y){ e[cnt].to=y; e[cnt].next=head[x]; head[x]=cnt++; return ;}int find(int x){ int p=x,t; while(fa[p]!=p)p=fa[p]; while(x!=p)t=fa[x],fa[x]=p,x=t; return p;}bool vis[N];int main(){ for(int i=1;i
=0;i--) { ans[i]=ans[i+1]+1; for(int j=head[q[i+1]];j!=-1;j=e[j].next) { int to1=e[j].to; if(!vis[to1])continue; int fx=find(q[i+1]),fy=find(to1); if(fx!=fy) { fa[fx]=fy; ans[i]--; } } vis[q[i]]=1; } for(int i=0;i<=K;i++) { printf("%d\n",ans[i]); } return 0;}

  

转载于:https://www.cnblogs.com/Winniechen/p/9005135.html

你可能感兴趣的文章
移动铁通宽带上网设置教程
查看>>
java中判断字符串中是否有中文字符
查看>>
Python算法(含源代码下载)
查看>>
利用Windows自带的Certutil查看文件MD5
查看>>
通过原生js添加div和css
查看>>
简单的导出表格和将表格下载到桌面上。
查看>>
《ArcGIS Engine+C#实例开发教程》第一讲桌面GIS应用程序框架的建立
查看>>
递归查询上一级
查看>>
JAVA - 大数类详解
查看>>
查询指定名称的文件
查看>>
批处理文件
查看>>
1.每次按一下pushbutton控件,切换图片?
查看>>
Python 嵌套列表解析
查看>>
[GXOI/GZOI2019]旧词——树链剖分+线段树
查看>>
android 补间动画的实现
查看>>
2017年广东省ACM省赛(GDCPC-2017)总结
查看>>
第十届蓝桥杯B组C++题目详解和题型总结
查看>>
树的存储结构2 - 数据结构和算法42
查看>>
函数的嵌套调用
查看>>
OC中使用 static 、 extern、 const使用
查看>>