博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Latest Common Ancestor
阅读量:4985 次
发布时间:2019-06-12

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

倍增求LCA

时间复杂度O(nlogn)

模板

#include 
#include
#include
#include
using namespace std;const int maxn = 10007;const int DEG = 20;int head[maxn*2],nxt[maxn*2],to[maxn*2],tot;void init(){ tot=0; memset(head,0,sizeof(head)); memset(nxt,0,sizeof(nxt));}void add(int u,int v){ ++tot; to[tot]=v; nxt[tot]=head[u]; head[u]=tot;}int fa[maxn][DEG]; //fa[i][j]表示结点i的第2^j个祖先int deg[maxn]; //深度数组void bfs(int root){ queue
que; deg[root]=0; fa[root][0]=root; que.push(root); while(!que.empty()) { int tmp=que.front(); que.pop(); for(int i=1;i
deg[v]) swap(u,v); int hu=deg[u],hv=deg[v]; int tu=u,tv=v; for(int det=hv-hu,i=0;det;det>>=1,i++) if(det&1) tv=fa[tv][i]; if(tu==tv) return tu; for(int i=DEG-1;i>=0;i--) { if(fa[tu][i]==fa[tv][i]) continue; tu=fa[tu][i]; tv=fa[tv][i]; } return fa[tu][0];}bool flag[maxn];int main(){ int tt,n,u,v; scanf("%d",&tt); while(tt--) { init(); scanf("%d",&n); memset(flag,false,sizeof(flag)); for(int i=1;i

POJ1330

分析

模板题


 

SPOJ COT

分析

根据dfs序建主席树,lca求最近公共祖先结点后,正常的按照主席树查询第k大即可


 

转载于:https://www.cnblogs.com/Deadline/p/9041624.html

你可能感兴趣的文章
正则表达式语法(msdn)
查看>>
oralce使用INSERT语句向表中插入数据
查看>>
DOS命令大全(经典收藏)
查看>>
MySQL 数据类型 详解 (转载)
查看>>
干净win7要做几步才能运行第一个Spring MVC 写的动态web程序
查看>>
JavaWeb 项目与系统时间相差 8 个小时的问题
查看>>
Java中 ==和equals 的区别
查看>>
枚举出局域网上所有网络资源
查看>>
Maven学习笔记(一)
查看>>
舒适的路线
查看>>
eclipse创建maven web项目
查看>>
Microsoft Baseline Configuration Analyzer 2.0(MBCA) For Windows Server 2012
查看>>
SU Demos 03T-F Analysis-03Suphasevel
查看>>
继承(day09)
查看>>
分割线
查看>>
xls的读写
查看>>
用函数创建子进程
查看>>
Myeclipse配置插件
查看>>
gitlab配置通过smtp发送邮件(QQ exmail腾讯企业为例)
查看>>
struts2学习笔记——常见报错及解决方法汇总(持续更新)
查看>>