博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AC日记——[HNOI2014]世界树 bzoj 3572
阅读量:7104 次
发布时间:2019-06-28

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

 

思路:

  虚树+乱搞;

 

代码:

#include 
using namespace std;#define maxn 300005#define INF 0x3f3f3f3fstruct KiType { int id,key; bool operator<(const KiType pos)const { return key
que;inline void in(int &now){ char Cget=getchar();now=0; while(Cget>'9'||Cget<'0')Cget=getchar(); while(Cget>='0'&&Cget<='9') { now=now*10+Cget-'0'; Cget=getchar(); }}inline void edge_add(int u,int v){ E[++cnt]=head[u],V[cnt]=v,head[u]=cnt; E[++cnt]=head[v],V[cnt]=u,head[v]=cnt;}inline void edge_add1(int u,int v){ if(deep[u]
size[lar[now]]) lar[now]=V[i]; }}void dfs2(int now,int chain){ top[now]=chain,id[now]=++cnt,id_[cnt]=now; if(lar[now]) dfs2(lar[now],chain); for(int i=head[now];i;i=E[i]) { if(V[i]==lar[now]||V[i]==f[now]) continue; dfs2(V[i],V[i]); } ri[now]=cnt;}inline int find(int x,int y){ while(top[x]!=top[y]) { if(deep[top[x]]
>1; pos_=up(now,pos_-dis[fa]+deep[fa]+1); pos_=size[pos_]-size[now]; sum[bel[now]]+=pos_,sum[bel[fa]]-=pos_; }cur: sum[bel[now]]+=size[now]; for(int i=head[now];i;i=E[i]) { if(V[i]==fa) continue; sum[bel[now]]-=size[V[i]]; Count(V[i],now); }}void clear(int now,int fa){ for(int i=head[now];i;i=E[i]) { if(fa==V[i]) continue; clear(V[i],now); } head[now]=0,sum[now]=0,dis[now]=0,vis[now]=false; bel[now]=0,dis[now]=INF;}int main(){ freopen("worldtree.in","r",stdin); freopen("worldtree.out","w",stdout); in(n);int u,v; for(int i=1;i
ri[sta[v]]) { if(pos) edge_add1(pos,sta[v]); pos=sta[v],v--; } if(pos) { int lca=find(pos,now); if(lca!=pos) edge_add1(pos,lca); if(lca!=sta[v]) sta[++v]=lca; } sta[++v]=now; } while(v>1) edge_add1(sta[v],sta[v-1]),v--; while(!que.empty()) { int now=que.front();que.pop(),if_[now]=false; for(int i=head[now];i;i=E[i]) { if(dis[V[i]]>dis[now]+W[i]) { dis[V[i]]=dis[now]+W[i]; bel[V[i]]=bel[now]; if(!if_[V[i]]) if_[V[i]]=true,que.push(V[i]); } else if(dis[V[i]]==dis[now]+W[i]) { if(bel[now]

 

转载于:https://www.cnblogs.com/IUUUUUUUskyyy/p/6972089.html

你可能感兴趣的文章
实践:几十亿条数据分布在几十个节点上的毫秒级实时排序方法
查看>>
PMWiki安装教程
查看>>
JAVA多线程之volatile 与 synchronized 的比较
查看>>
一个经典编程面试题的“隐退”
查看>>
POJ2109
查看>>
显示创建一个表的SQL语句
查看>>
光流和KLT
查看>>
Linux c括号作用域【原创笔记】
查看>>
分分钟带你玩转 Web Services【2】CXF
查看>>
ASP.NET MVC+LINQ开发一个图书销售站点(7):图书分类管理
查看>>
如何做一名技术管理者
查看>>
Resouce, platform_device 和 platform_driver 的关系【转】
查看>>
HTML标记大全参考手册(转载)
查看>>
查看表空间与对应的表空间文件
查看>>
linux C判断文件是否存在【转】
查看>>
《J2EE Tutorial中文版》读书笔记(1)
查看>>
Solaris关机重启命令小结
查看>>
如何为编程爱好者设计一款好玩的智能硬件(四)——初尝试·把温湿度给收集了(上)!...
查看>>
HTTP POST GET 本质区别详解
查看>>
PHP使用Simple_HTML_DOM遍历、过滤及保留指定属性
查看>>