博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU2586 How far away ?(LCA模板题)
阅读量:5977 次
发布时间:2019-06-20

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

题目链接:

题意:

给定一棵树,求两个点之间的距离。

分析:

LCA 的模板题目 ans = dis[u]+dis[v] - 2*dis[lca(u,v)];

在线算法:详细解说

代码例如以下:

#include 
#include
#include
#include
using namespace std;const int maxn = 40010;struct nod{ int to,next,w;}edge[maxn*2];int head[maxn],ip,tot;bool vis[maxn];int R[maxn*2],ver[maxn*2];int dp[maxn*2][25];int first[maxn];int dis[maxn];void init(){ memset(head,-1,sizeof(head)); memset(vis,false,sizeof(vis)); dis[1]=0,ip=0,tot=0;}void add(int u,int v,int w){ edge[ip].to=v; edge[ip].w=w; edge[ip].next=head[u]; head[u]=ip++;}/***ver[i]=x:第i个点是x.first[i]=x: 点i第一次出现的位置是xR[i]=x:第i个点的深度为x;dis[i]=x;点i到根节点的距离为x.***/void dfs(int u,int dept){ vis[u]=true,ver[++tot]=u,first[u]=tot,R[tot]=dept; for(int i=head[u];i!=-1;i=edge[i].next){ int v=edge[i].to; if(!vis[v]){ dis[v]=dis[u]+edge[i].w; dfs(v,dept+1); ver[++tot]=u,R[tot]=dept; } }}void ST(int n){ for(int i=1;i<=n;i++) dp[i][0]=i; for(int i=1;(1<
<=n;i++){ for(int j=1;j+(1<
<=n;j++){ int a = dp[j][i-1],b=dp[j+(1<<(i-1))][i-1]; if(R[a]
v) swap(u,v); return ver[RMQ(u,v)];}int main(){ int t,n,m; scanf("%d",&t); while(t--){ scanf("%d%d",&n,&m); init(); for(int i=0;i

离线算法: 详细解说

代码例如以下:

#include 
#include
#include
#include
using namespace std;const int maxn = 40010;struct nod{ int u,v,next,w,lca;}edge[maxn*2],edge1[maxn];int par[maxn],ancestors[maxn];int head[maxn],head1[maxn];int dis[maxn],ip,ip1;bool vis[maxn];void init(){ memset(head1,-1,sizeof(head1)); memset(head,-1,sizeof(head)); memset(vis,false,sizeof(vis)); for(int i=1;i

 

转载地址:http://hfsox.baihongyu.com/

你可能感兴趣的文章
Goldengate双向复制配置
查看>>
Oracle官方内部MAA教程
查看>>
DNS相关配置
查看>>
Nginx-location配置
查看>>
扫描线
查看>>
设计模式--模板方法(Template Method)
查看>>
引入CSS的方式有哪些?link和@import的有何区别应如何选择【转载】
查看>>
MariaDB 和 MySQL 性能测试比较
查看>>
Restful Web Service初识
查看>>
This用法和闭包
查看>>
JSP页面获取系统时间
查看>>
L-1-19 Linux之RAID&分区&文件系统命令
查看>>
stat查找权限以数字形式显示
查看>>
源码编译安装httpd2.4.9
查看>>
linux系统优化
查看>>
在使用 Windows Update 检查更新时,系统没有提供下载 Windows 7 SP1 的选项
查看>>
在Struts + Spring + Hibernate的组合框架模式中,三者各自的特点都是什么
查看>>
Windows 2012 R2 DataCenter服务器DNS无法打开AD, DNS错误代码4000 4007 4013
查看>>
java基础数据类型char
查看>>
打印 PE导入导出表
查看>>