LCA rmq st model
2024-09-03 13:50:14
LCA:倍增 memset(p,-,sizeof(p)); inline void dfs(int u)
{
for (int i=head[u];i!=-;i=e[i].next)
{
int v=e[i].v;
if (deep[v]==)
{
deep[v]=deep[u]+;
p[v][]=u;
dfs(v);
}
}
} void init()
{
for (int j=;(<<j)<=n;j++)
for (int i=;i<=n;i++)
if (p[i][j-]!=-)
p[i][j]=p[p[i][j-]][j-];
}
//deep[1]的初始为1
int lca(int a,int b)
{
int i,j;
if (deep[a]<deep[b]) swap(a,b);
for (i=;(<<i)<=deep[a];i++);
i--; for (j=i;j>=;j--)
if (deep[a]-(<<j)>=deep[b])
a=p[a][j];
if (a==b) return a; for (j=i;j>=;j--)
{
if (p[a][j]!=-&&p[a][j]!=p[b][j])
{
a=p[a][j];
b=p[b][j];
}
}
return p[a][];
}
最新文章
- Atitit 动态调用webservice与客户端代理方式调用
- Odoo 9 PDF不显示中文字体
- 使用EntityFramework6完成增删查改和事务
- HDU 3544 (不平等博弈) Alice&#39;s Game
- HDU 1240 (简单三维广搜) Asteroids!
- Oracle 经典语法(五)
- poj 1659 Frogs&#39; Neighborhood (贪心 + 判断度数序列是否可图)
- java中函数是值传递还是引用传递?
- CF #284 div1 D. Traffic Jams in the Land 线段树
- 在什么情况下使用@ResponseBody 注解?
- webrtc初探之一对一的连接过程(一)
- 「雅礼集训 2017 Day5」矩阵
- thunderbird 163 smtp
- jQuery validdate插件的使用
- 同时使用n和nvm踩到的坑
- 单节点etcd配置
- HTML:Registry design.(Include a simple web design use HTML)
- xcode资源管理
- crontab入门
- ASPxComboBox 自带输入法确定之后再搜索解决方法
热门文章
- Shell脚本中时间处理
- jdk环境变量配置(参考自《疯狂java讲义》)
- Django REST framework 的功能
- linux各种终端类型的区别和概念
- laravel使用总结(二)
- pycharm添加wordcloud模块时报错:error: Microsoft Visual C++ 14.0 is required. Get it with ";Microsoft Visual C++ Build Tools";: http://landinghub.visualstudio.com/visual-cpp-build-tools
- shell-note-1-基础篇
- Ubuntu 14.04在虚拟机上的桥接模式下设置静态IP
- mysql参数讲解
- Tomcat下部署PHP