传送门

(这次的英文题面要比上一个容易看多了)

(英语蒟蒻的卑微)

又是一个很裸的LCA题

(显然,这次不太容易打暴力咧)

(但听说还是有大佬用dfs直接a掉了)

正好

趁这个机会复习一下LCA

这里用的是倍增lca

的思想(一不小心是会写tle的吧)

(也有可能是因为我太弱了才t掉的)

我才不会说我有一次卑微了

一开始看PPT

以为自己明白了

结果发现

有一点点问题

由于本题中这个树是题里给的

所以节点的编号不可以简简单单认为是从上到下从左到右顺序排列的

(但其实这部算什么大问题啊qwq)

(还是我太弱了)

长记性了的我这次记住了要加'\n'

#include<cstdio>
#include<iostream>
#include<cstring>
#define maxn 40000
using namespace std; struct EDGE
{
int nxt,to,v;
}edge[maxn*+]; int T,n,root,cnt,m;
int head[maxn+],dep[maxn+],dis[maxn+];
int f[maxn+][];
bool vis[maxn+]; void add(int x,int y,int z)
{
edge[++cnt].to=y;
edge[cnt].v=z;
edge[cnt].nxt=head[x];
head[x]=cnt;
} void dfs(int u,int fa)
{
dep[u]=dep[fa]+;
for(int i=; i<=; i++)
{
f[u][i+]=f[f[u][i]][i];
}
for(int i=head[u]; i; i=edge[i].nxt)
{
if(edge[i].to==fa)
{
continue;
}
dis[edge[i].to]=dis[u]+edge[i].v;
f[edge[i].to][]=u;
dfs(edge[i].to,u);
}
} int LCA(int x,int y)
{
if(dep[x]<dep[y])
{
swap(x,y);
}
for(int i=; i>=; i--)
{
if(dep[f[x][i]]>=dep[y])
{
x=f[x][i];
}
if(x==y)
{
return x;
}
}
for(int i=; i>=; i--)
{
if(f[x][i]!=f[y][i])
{
x=f[x][i];
y=f[y][i];
}
}
return f[x][];
} int main()
{
scanf("%d",&T);
while(T--)
{
memset(vis,,sizeof(vis));
memset(edge,,sizeof(edge));
memset(f,,sizeof(f));
memset(dep,,sizeof(dep));
memset(head,,sizeof(head));
memset(dis,,sizeof(dis));
cnt=;
scanf("%d%d",&n,&m);
for(int i=; i<=n-; i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
vis[y]=;
add(x,y,z);
add(y,x,z);
}
for(int i=; i<=n; i++)
{
if(vis[i]==)
{
root=i;
break;
}
}
dfs(root,);
for(int i=; i<=m; i++)
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n",dis[a]+dis[b]-*dis[LCA(a,b)]);
}
}
return ;
}

hdu - 2586 (LCA板子题)的更多相关文章

  1. HDU 2586 (LCA模板题)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2586 题目大意:在一个无向树上,求一条链权和. 解题思路: 0 | 1 /   \ 2      3 ...

  2. [hdu 2586]lca模板题(在线+离线两种版本)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2586 在线版本: 在线方法的思路很简单,就是倍增.一遍dfs得到每个节点的父亲,以及每个点的深度.然后 ...

  3. bzoj-1787-洛谷-4281(LCA板子题)

    传送门(bzoj) 传送门(洛谷) 可以说这道也是一个板子题 由于题中是三个人需经过的路径最短 就会有一点点不太一样 那么 就两两求LCA 这样之后就会出现两种状况 一.所得到的三个LCA是相等的 那 ...

  4. HDU 2586 ( LCA/tarjan算法模板)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=2586 题意:n个村庄构成一棵无根树,q次询问,求任意两个村庄之间的最短距离 思路:求出两个村庄的LCA,d ...

  5. hdu 2586(LCA在线ST)

    How far away ? Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): A ...

  6. HDU 2586 LCA

    题目大意: 多点形成一棵树,树上边有权值,给出一堆询问,求出每个询问中两个点的距离 这里求两个点的距离可以直接理解为求出两个点到根节点的权值之和,再减去2倍的最近公共祖先到根节点的距离 这是自己第一道 ...

  7. hdu 2586 lca在线算法(朴素算法)

    #include<stdio.h> #include<string.h>//用c/c++会爆栈,用g++ac #define inf 0x3fffffff #define N ...

  8. HDU 2586 How far away ? (LCA)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2586 LCA模版题. RMQ+LCA: #include <iostream> #incl ...

  9. HDU - 2586 How far away ?(LCA模板题)

    HDU - 2586 How far away ? Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & ...

随机推荐

  1. 深度学习新星:GAN的基本原理、应用和走向

    深度学习新星:GAN的基本原理.应用和走向 (本文转自雷锋网,转载已获取授权,未经允许禁止转载)原文链接:http://www.leiphone.com/news/201701/Kq6FvnjgbKK ...

  2. MySql数据库实现分布式的主从结构

    最近学习了关于使用MySql数据的实现主动结构的原理,在以前的并发访问低的场景一下,一般一台性能高的服务器作为一个MySql数据,就可以满足业务的增删改查场景,但是随着网络用户的增加 当出现高并发,高 ...

  3. 小米手机Toast显示带应用名称问题解决方法

    近期为了适配刘海屏,向公司申购了一步小米8的手机,然后测试人员那边测出来一堆适配的问题,其中有一个每一个Toast会显示app的名称+显示的内容,然后网上查找了一下解决方法记录一下,顺便封装了Toas ...

  4. 调用Android自带浏览器打开网页

    转载请注明出处: http://blog.csdn.net/lowprofile_coding/article/details/77928608 在Android中可以调用自带的浏览器,或者指定一个浏 ...

  5. Ext 日期格式化

    //日期格式化 Date.prototype.Format = function (fmt) { var o = { , //月份 "d+": this.getDate(), // ...

  6. Spark性能优化【OOM】

    一.异常情况 Spark on yarn模式下,当yarn为client的模式时没有OOM而cluster模式下出现OOM 二.异常分析 由于client模型没有出现OOM而cluster模式出现OO ...

  7. [20190130]删除tab$记录的恢复2.txt

    [20190130]删除tab$记录的恢复2.txt --//前面链接写好了脚本,开始测试删除后的恢复.千万不要在生产系统做这样的测试!!--//参考链接:http://blog.itpub.net/ ...

  8. socket网络编程之不间断通信

    socket是python提供的一种网络通信方式. socket是应用层与TCP/IP协议通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议 ...

  9. Lua保留指定小数位数

    默认会四舍五入 比如:%0.2f 会四舍五入后,保留小数点后2位 print(string.format("%.1f",0.26)) ---会输出0.3,而不是0.2 Lua保留一 ...

  10. layui中,同一个页面动态加载table数据表格

    效果图: 前端代码: <div class="layui-fluid" id="record-user" hidden="hidden" ...