题目链接:http://poj.org/problem?id=1986

题意:就是老问题求val[u]+val[v]-2*val[root]就行。还有这题没有给出不联通怎么输出那么题目给出的数据一定

是联通的。

题解:就是单纯的lca。

#include <iostream>
#include <cstring>
#include <vector>
#include <cstdio>
using namespace std;
const int M = 8e4 + 10;
vector<pair<int , int> >vc[M];
int p[M][20] , val[M] , deep[M];
void dfs(int pos , int pre , int d) {p[pos][0] = pre;deep[pos] = d;int len = vc[pos].size();for(int i = 0 ; i < len ; i++) {int u = vc[pos][i].first;if(u != pre) {val[u] += val[pos] + vc[pos][i].second;dfs(u , pos , d + 1);}}
}
void init(int n) {for(int i = 0 ; i < 18 ; i++) {for(int j = 1 ; j <= n ; j++) {if(p[j][i] == -1) {p[j][i + 1] = -1;}else {p[j][i + 1] = p[p[j][i]][i];}}}
}
int lca(int a , int b) {if(deep[a] < deep[b]) {swap(a , b);}int d = deep[a] - deep[b];for(int i = 0 ; i < 18 ; i++) {if(d & (1 << i)) {a = p[a][i];}}if(a == b) {return a;}for(int i = 17 ; i >= 0 ; i--) {if(p[a][i] != p[b][i] && p[a][i] != -1) {a = p[a][i];b = p[b][i];}}return p[a][0];
}
int main() {int n , m , u , v , w , k;char cp[10];while(scanf("%d%d" , &n , &m) != EOF) {for(int i = 1 ; i <= n ; i++) {val[i] = 0;vc[i].clear();}for(int i = 1 ; i < n ; i++) {scanf("%d%d%d%s" , &u , &v , &w , cp);vc[u].push_back(make_pair(v , w));vc[v].push_back(make_pair(u , w));}memset(p , -1 , sizeof(p));dfs(1 , -1 , 1);init(n);scanf("%d" , &k);while(k--) {scanf("%d%d" , &u , &v);printf("%d\n" , val[u] + val[v] - 2 * val[lca(u , v)]);}}return 0;
}

转载于:https://www.cnblogs.com/TnT2333333/p/6737644.html

poj1986 Distance Queries(lca又是一道模版题)相关推荐

  1. poj 1986 Distance Queries LCA

    题目链接:http://poj.org/problem?id=1986 Farmer John's cows refused to run in his marathon since he chose ...

  2. 畅通工程(并查集模版题)

    题意: 多组输入N,M,当N为0退出人输入,N是道路数目,M是村庄总数,随后N行,每行输入三个数两个村庄的编号,以及连接这两个村庄的费用. 对每一组数据输出畅通工程的最低费用,如果不能畅通就输出&qu ...

  3. pyHook pyHook3 区别_一般过去时态和现在完成时态之间到底有什么区别?通过一道语法题,帮你彻底讲清楚!...

    有同学在群里问了一道关于"现在完成时态和一般过去时态之间区别"的语法题,摘录如下: There is someone knocking at the door. -- It mus ...

  4. PAT (Top Level) Practise 1008 Airline Routes(Tarjan模版题)

    1008. Airline Routes (35) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue Given a ...

  5. 【POJ No. 1986】 距离查询 Distance Queries

    [POJ No. 1986] 距离查询 Distance Queries 北大OJ 题目地址 [题意] 约翰有N 个农场,标记为1-N .有M 条垂直和水平的道路连接农场,每条道路的长度各不相同.每个 ...

  6. 【数据结构】 最小生成树(四)——利用kruskal算法搞定例题×3+变形+一道大水题...

    在这一专辑(最小生成树)中的上一期讲到了prim算法,但是prim算法比较难懂,为了避免看不懂,就先用kruskal算法写题吧,下面将会将三道例题,加一道变形,以及一道大水题,水到不用高级数据结构,建 ...

  7. POJ 2387 Til the Cows Come Home (最短路径 模版题 三种解法)

    原题链接:Til the Cows Come Home 题目大意:有  个点,给出从  点到  点的距离并且  和  是互相可以抵达的,问从  到  的最短距离. 题目分析:这是一道典型的最短路径模版 ...

  8. 谁喝水谁养斑马答案C语言,余式厚:最难的一道推理题叫“谁养斑马”--文化--人民网...

    余式厚的课上得生动是有名的,让枯燥变得有趣是他的拿手好戏 在他的逻辑课上可以唱歌 几年前,余式厚偶遇一位学生,学生考他:"您还能叫出我的名字吗?"余式厚顺利接招,准确无误. 那时, ...

  9. 亚马逊的一道智力题,悬链线问题

    亚马逊的一道智力题,悬链线问题   感觉这阵子网上开始流传一道题,号称是亚马逊的面试题,问题挺有意思.大致是这样. 有一根无弹性的绳子,长度是80m,然后两端被挂在50m高的柱子上,问当绳子的中点离地 ...

最新文章

  1. 利用nginx-status监控nginx服务器状态
  2. 使用DjangoUeditor将Ueditor移植到Django(BAE环境下)
  3. Linux下使用ls查看文件颜色全部为白色的解决方法,以及Linux中文件颜色介绍
  4. 【科技金融】某平台互金产品设计流程和运营策略
  5. python求txt文件内平均值_使用Python计算.txt文件中的数字的平均值
  6. Orbeon form PE 版本 dmv-14 点击 save 按钮之后的执行逻辑
  7. php购物车(session)
  8. 【nodejs原理源码赏析(6)】深度剖析cluster模块源码与node.js多进程
  9. hbase 学习(十五)缓存机制以及可以利用SSD作为存储的BucketCache
  10. Poj 1077 eight(BFS+全序列Hash解八数码问题)
  11. java 日期年度 35变2035_连接IBM MQ原因码报2035的错误解决办法
  12. mysql 主节点挂机_云服务器如何重启MySQL服务,正确重启mysql
  13. 数据结构严蔚敏 栈基本操作 C语言实现
  14. Java map转list
  15. linux判断网卡能否上网,网卡坏了有什么现象?判断网卡是否坏了的方法
  16. 优动漫PAINT入门宝典——颜色配置实例展示
  17. 琵琶行·并序--白居易
  18. php微信公众号支付实例教程,php微信支付之公众号支付功能
  19. 植物大战僵尸anroid版
  20. python中traceback获取异常信息

热门文章

  1. python聊天软件实现_python实现点对点聊天程序
  2. c语言中闰年 日期 天数 统计出在某个特定的年份中,出现了多少次既是13号又是星期五的情形
  3. dao传递类参数 mybatis_Mybatis (ParameterType) 如何传递多个不同类型的参数
  4. 三轴加速度传感器和六轴惯性传感器_一文读懂汽车MEMS惯性传感器的七大应用(上)...
  5. 计算机硬件组成 pdf,计算机硬件的组成..pdf
  6. apache php日志配置,HTML_初学:apache与php基本配置,1、APACHE的日志主要分为“ - phpStudy...
  7. Initialization failed for ‘https://start.spring.io‘ Please check URL, network and proxy settings.
  8. Redis流水线性能提高
  9. java - 求a+aa+aaa+aa...a之和
  10. 【youcans 的 OpenCV 例程 200 篇】107. 退化图像的维纳滤波