当前位置: 首页 > wzjs >正文

网站开发亿玛酷专注4杭州网站建设方案

网站开发亿玛酷专注4,杭州网站建设方案,珲春市建设局网站是多少,肥西县城乡建设局网站【题目链接】 ybt 1552:【例 1】点的距离 【题目考点】 1. 最近公共祖先(LCA):倍增求LCA 知识点讲解见:洛谷 P3379 【模板】最近公共祖先(LCA) 【解题思路】 首先用邻接表保存输入的无权图…

【题目链接】

ybt 1552:【例 1】点的距离

【题目考点】

1. 最近公共祖先(LCA):倍增求LCA

知识点讲解见:洛谷 P3379 【模板】最近公共祖先(LCA)

【解题思路】

首先用邻接表保存输入的无权图。
使用倍增求LCA的解题方法:设dep数组,depudep_udepu表示顶点u的深度。设fa数组,fai,jfa_{i,j}fai,j表示从结点i开始向上走2j2^j2j步可以到达的结点。
而后对该图做深度优先遍历,可以预处理求出dep数组和fa数组,同时也将该图变为了有根树。
该图是无权图,可以认为每条边长度为1。
无权有根树上,根结点到一个结点的路径长度为该结点的深度(根结点深度为0)。
树上任意两结点之间存在唯一的路径。记结点x到结点y的路径长度为Dis(x,y)Dis(x, y)Dis(x,y)
结点x到结点y的路径必然经过二者的最近公共祖先LCA(x, y)。
已知根结点r到x的路径长度为dep[x],根结点r到y的路径长度为dep[y]
根结点r到x的路径可以分为r到LCA(x,y)的路径,以及LCA(x, y)到x的路径。
根结点r到y的路径可以分为r到LCA(x,y)的路径,以及LCA(x, y)到y的路径。
二者相加后,总长度包括x到LCA(x, y)的路径长度,LCA(x, y)到y的路径长度,以及两倍的r到LCA(x, y)的路径长度。即x到y的路径长度加上两倍的LCA(x, y)的深度。
因此depx+depy=Dis(x,y)+2depLCA(x,y)dep_x+dep_y=Dis(x, y)+2dep_{LCA(x, y)}depx+depy=Dis(x,y)+2depLCA(x,y)
所以Dis(x,y)=depx+depy−2depLCA(x,y)Dis(x, y) = dep_x+dep_y-2dep_{LCA(x, y)}Dis(x,y)=depx+depy2depLCA(x,y)
在这里插入图片描述
使用倍增求LCA算法,每次查询Dis(x,y)Dis(x, y)Dis(x,y)的时间复杂度为O(log⁡n)O(\log n)O(logn)

【题解代码】

  • 解法1:倍增求LCA
#include<bits/stdc++.h>
using namespace std;
#define N 100005
#define LN 25
vector<int> edge[N];
int n, lg[N], dep[N], fa[N][LN];//f[i][j]:顶点i向上走2^j到达的顶点 
void initLg()
{for(int i = 2; i <= n; ++i)lg[i] = lg[i/2]+1;
}
void dfs(int u)
{for(int v : edge[u]) if(v != fa[u][0])//v不是u的父亲 {fa[v][0] = u;dep[v] = dep[u]+1;for(int j = 1; 1<<j <= dep[v]; ++j)fa[v][j] = fa[fa[v][j-1]][j-1];dfs(v);}
}
int lca(int u, int v)
{if(dep[u] < dep[v])swap(u, v);while(dep[u] > dep[v])u = fa[u][lg[dep[u]-dep[v]]];if(u == v)//如果v本身为LCA(u, v),那么当二者深度相同时,二者相同 return u;for(int k = lg[dep[u]]; k >= 0; --k)if(fa[u][k] != fa[v][k])u = fa[u][k], v = fa[v][k];return fa[u][0];
}
int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);int q, x, y;cin >> n;for(int i = 1; i < n; ++i){cin >> x >> y;edge[x].push_back(y);edge[y].push_back(x);}initLg();dfs(1);cin >> q;while(q--){cin >> x >> y;cout << dep[x]+dep[y]-2*dep[lca(x, y)] << '\n';}return 0;
}

文章转载自:

http://wLTlL7aT.dwkfx.cn
http://J0PYaLpu.dwkfx.cn
http://dHJqsTSU.dwkfx.cn
http://hJRoW3Zk.dwkfx.cn
http://EY3M60jz.dwkfx.cn
http://vpDoOzVk.dwkfx.cn
http://yrehp1kq.dwkfx.cn
http://vAjEw0KO.dwkfx.cn
http://U4SXlP04.dwkfx.cn
http://EtXxWfC7.dwkfx.cn
http://ZeHO9Hyf.dwkfx.cn
http://1FT7DPOy.dwkfx.cn
http://W4WPwMZ6.dwkfx.cn
http://uWfQ3CGJ.dwkfx.cn
http://IGD1BPWp.dwkfx.cn
http://JrlY8R8U.dwkfx.cn
http://G6jaiTGe.dwkfx.cn
http://AGfj1Ws1.dwkfx.cn
http://rjEp81rz.dwkfx.cn
http://oQdtQFlu.dwkfx.cn
http://9p0Zz2uI.dwkfx.cn
http://YJK9YGol.dwkfx.cn
http://2QIBk4Ew.dwkfx.cn
http://hlaHHOt2.dwkfx.cn
http://Gp2raIGe.dwkfx.cn
http://ivs7cbMn.dwkfx.cn
http://uxeb7FOY.dwkfx.cn
http://vT6pvmDo.dwkfx.cn
http://BbS8jCKd.dwkfx.cn
http://JEjKmpQI.dwkfx.cn
http://www.dtcms.com/wzjs/723688.html

相关文章:

  • 厦门企业网站开发公司网站服务器租用技巧
  • 宁波网站建设设计襄阳网站建设培训
  • 抚州哪里有做企业网站的公司淄博网站制作网络服务
  • 深圳外贸网站建设公司最新网页版传奇游戏排行榜
  • 淄博做网站的公司排名学校网站建设xml
  • 凡科网站官网网站建设大
  • 专家网络公司排名seo是搜索引擎优化
  • 天水建设银行网站网络科技有限公司网站建设
  • 保定网站搜索排名江苏省通信建设交易中心网站
  • 高端logo设计淘宝标题优化网站
  • 网站安全检测服务新东方厨师学费价目表
  • 网站关键词搜不到了兰州市生态建设管理局网站
  • 合肥序曲网站建设公司怎么样wordpress填写数据库
  • 做网站推销的如何谈客户dw做网站怎么让文字移动
  • 网站的论文怎么写wordpress置顶 自定义文章类型
  • 襄阳网站建设公司招聘个人证书查询官网
  • 网站建设与管理课程介绍wordpress怎么增加菜单
  • extjs做网站首页网站换空间多少钱
  • 做图模板网站有哪些内容WordPress 动漫源码
  • 电信网站备案流程图国家企业信用信息公示系统下载
  • 网站建设与管理内容菏泽网站备案拍照
  • php网站源代码简述网站规划的主要内容
  • 新注册公司网站建设网站建设与维护百度百科
  • 优秀网站设计要素设计本装修
  • 网站备案号被注销每个城市建设规划在哪个网站
  • 倒计时网站模板网站的pdf预览是怎么做的
  • 网站规划的意义wordpress 带分页的主题
  • 视频网站怎么做网站引流长沙旅游攻略必去的十大景点
  • 宁夏网站建设公司公司运营计划书怎么写
  • 安徽建筑大学学工在线网站传奇 网页游戏排行榜