代码:

#include<bits/stdc++.h>
using namespace std;int main()
{int T;cin>>T;while(T--){int n,m;cin>>n>>m;int a[2011]={0};a[1]=1000;//父节点 for(int i=1;i<=n;++i){int lchild,rchild;cin>>lchild>>rchild;if(lchild!=-1) a[lchild]=i;//记录祖先 if(rchild!=-1) a[rchild]=i;}stack<int>st1,st2;    while(m--){while(!st1.empty()) st1.pop();while(!st2.empty()) st2.pop();int x,y;cin>>x>>y;st1.push(x);           while(a[x]!=1000)//要查询的节点及其祖先进栈{x=a[x];st1.push(x);}st2.push(y);          while(a[y]!=1000){y=a[y];st2.push(y);}while(!st1.empty()&&!st2.empty()){if(st1.top()==st2.top())//找到公共祖先节点 {st1.pop();st2.pop();}else{break;}}cout<<st1.size()+st2.size()<<endl;//各栈剩余的节点组成路径}}return 0;
}

二叉树任意两点间最短路径(利用栈-找公共祖先,不需要建立二叉树)相关推荐

  1. AOJ GRL_1_C: All Pairs Shortest Path (Floyd-Warshall算法求任意两点间的最短路径)(Bellman-Ford算法判断负圈)

    题目链接:http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=GRL_1_C All Pairs Shortest Path Input ...

  2. 求解两点间最短路径的算法

    最短路径算法 1.Dijkstra算法 2.Bellman-Ford算法 3.SPFA算法 4.Floyd算法 几种最短路径算法的对比 Dijkstra算法.Bellman-Ford算法和SPFA算法 ...

  3. 地铁线路图中任意两点间所有路径高效算法

    在求图线任意两点间最短路径时,利用floyd.dijdstra等成熟的算法可以求得,效率还不错.但要求换乘最少.最舒适等路径时,需要求线网图中任意两个点的所有路径,然后根据条件筛选,以上算法无能为力. ...

  4. 图论 ---- F. The Shortest Statement (最短路的性质 + 任意两点间最短路 + 图转树)

    题目链接 题目大意: 给你一个nnn个点mmm条边的无向图,就是动态询问任意两点间的最短路 n,m∈[1,1e5],m−n≤20n,m\in[1,1e5],m-n\leq20n,m∈[1,1e5],m ...

  5. 【算法】Floyd-Warshall算法(任意两点间的最短路问题)(判断负圈)

    问题 求解任意两点间最短路问题也叫多源最短路径问题. 可解决途径 一种方法时把图中每个点当做源点重复算n次Dijkstra 算法(Dijkstra是求单源最短路径的算法),时间复杂度O(n^3),据说 ...

  6. 任意两点间的最短路问题(Floyd-Warshall算法)

    /* 任意两点间的最短路问题(Floyd-Warshall算法)*/import java.util.Scanner;public class Main {//图的顶点数,总边数static int ...

  7. matlab求两点间距离,matlab如何求一个N*2的矩阵的任意两点间的距离?

    matlab如何求一个N*2的矩阵的任意两点间的距离? mip版  关注:64  答案:3  悬赏:0 解决时间 2021-02-23 20:55 已解决 2021-02-23 16:37 假设有个矩 ...

  8. golang计算任意两点间的方位角

    计算任意两点间的方位角 方位角是从某点的指北经线起,依顺时针方向到目标方向线之间的水平夹角(如图所示θ,可以将其看成是指南针所指示的角度),也即是OPN平面与OPQ平面的所构成的二面角大小. 以北极点 ...

  9. 计算球面上任意两点间的球面距离(C++实现)

    文章目录 1 预备知识 2 原理描述 3 代码实现 1 预备知识 在求解此问题之前首先要明确一下几点: (1)两点间的球面距离: 球面上两点间的最短距离,即球心与球面上两点所确定的平面与球面相交,得到 ...

最新文章

  1. VMware中创建Ubuntu16.0.4虚拟桥连方式无法上网
  2. matlab中读取txt数据文件(txt文本文档)
  3. 多线程编程之二——MFC中的多线程开发
  4. HTML5video 标签
  5. 基于Fabric的性能测试与调优实践
  6. 备受青睐的在线报表工具有哪些?在线报表怎么做?
  7. Paramiko模块(堡垒机)
  8. LIRe 源代码分析 4:建立索引(DocumentBuilder)[以颜色布局为例]
  9. webconfig.xml文件golbalization节的作用
  10. linux电脑蓝牙传输文件在哪里,Linux操作系统下操作蓝牙手机的方法 -电脑资料
  11. 数据包的忽略打印与脱敏打印
  12. python win32api messagebox_如何在Python中使用Win32 API?
  13. 浅谈视频编解码器的工作原理和应用领域
  14. java 中关于字节数的总结_javaweb实习报告
  15. 《谈谈方法》这本小书篇幅很短,然而想说的却很多
  16. linux高性能集群搭建,sge linux高性能集群的搭建与使用
  17. 毕业设计-校园招聘系统
  18. 技术文档 | 5G系统连接管理:CM空闲和CM已连接
  19. matlab 电压矢量开关,解析电压空间矢量研究及Matlab仿真
  20. 【日语五十音图快速记忆法】(看了这个,真的很好记)

热门文章

  1. iOS开发 viewWillAppear:(BOOL)animated真机调试的时候不执行了怎么办
  2. 利用Python进行数据分析——数据导入导出
  3. 使用MOSES搭建网页翻译系统
  4. 字节跳动工程师收入世界第五,2021年全球程序员收入报告出炉
  5. 那些年啊,那些事——一个程序员的奋斗史 ——17
  6. [AHK]如何更改键盘快捷方式,在 Windows 10 中的虚拟桌面之间切换
  7. 机器视觉运动控制一体机应用例程|锂电池组装线上的读码应用
  8. 人脉就是钱脉,培养人脉的106个技巧
  9. 1000句英语经典口语
  10. MySQL必知必会(3)