题目描述

给出一棵有N个节点的有根树TREE(根的编号为1),对于每组查询,请输出树上节点u和v的最近公共祖先。 
最近公共祖先:对于有向树TREE的两个结点u,v。最近公共祖先LCA(TREE u,v)表示一个节点x,满足x是u、v的祖先且x的深度尽可能大。

输入

输入数据第一行是一个整数T(1<=T<=100),表示测试数据的组数。 
对于每组测试数据: 
第一行是一个正整数N(1<=N<=100),表示树上有N个节点。 
接下来N-1行,每行两个整数u,v(1<=u,v<=N),表示节点u是v的父节点。 
接下来一行是一个整数M(1<=M<=1000),表示查询的数量。 
接下来M行,每行两个整数u,v(11<=u,v<=N),表示查询节点u和节点v的最近公共祖先。 

输出

对于每个查询,输出一个整数,表示最近公共祖先的编号, 

样例输入

2
3
1 2
1 3
1
2 3
4
1 2
1 3
3 4
2
2 3
3 4
1
1
3

样例输出

1
1
3

来源

2014软院C题

数据量较大,直接上输入输出外挂

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<map>
#define within(x,a,b) ((unsigned)((x)-(a))<=((b)-(a)))
using namespace std;
int readint(int *p)
{
int ch;
while(!within(ch=getchar(),'',''))
if(ch == EOF) return EOF;
int rslt = ;
do
rslt=rslt*+(ch-'');
while(within(ch=getchar(),'',''));
*p = rslt;
return ;
}
int println_int(int i)
{
char s[], p=;
while(i){
s[p++] = i%;
i/=;
}
while(p) putchar(''+s[--p]);
putchar('\n');
}
struct tree
{
int father;
int floor;
};
map< int,tree > donser;
int deal(int m,int n)
{
int floor_max=max(donser[m].floor,donser[n].floor);
int floor_min=min(donser[m].floor,donser[n].floor);
int x,y;
if(donser[m].floor>donser[n].floor) //x->深的
{
x=m;y=n;
}
else
{
x=n;y=m;
}
while(floor_max!=floor_min)
{
x=donser[x].father;
floor_max--;
}
if(x==y)
return y;
else
{
while(x!=y)
{
x=donser[x].father;
y=donser[y].father;
}
return y;
}
}
int main()
{
int tes,num,shit;
while(~scanf("%d",&tes))
{
while(tes--)
{
readint(&num);
//cin>>num;
donser[].father=-;
donser[].floor=;
num--;
while(num--)
{
int x,y;
readint(&x);
readint(&y);
//cin>>x>>y;
donser[y].father=x;
donser[y].floor=donser[x].floor+;
}
//cin>>shit;
readint(&shit);
while(shit--)
{
int m,n;
readint(&m);
readint(&n);
//cin>>m>>n;
println_int(deal(m,n));
}
} }
return ;
}

BUPT复试专题—最近公共祖先(2014软院)的更多相关文章

  1. BUPT复试专题—网络的核(2014)

    题目描述 给定一个无向网络G,共有N个节点(1到N),M条边,求网络的核. 网络的核:到网络中其他节点距离之和最小的节点,且对于不连通的两点,他们之间的距离为N,若有多组解,输出编号最小的节点 输入 ...

  2. BUPT复试专题—最值问题(2013计院)

    题目描述 给出N个数,求出这N个数中最大值和次大值.注意这里的次大值必须严格小于最大值.输入保证N个数中至少存在两个不同的数. 输入格式 第一行为测试数据的组数T(T≤20).请注意,任意两组测试数据 ...

  3. BUPT复试专题—数据库检索(2014软院)

    题目描述 在数据库的操作过程中,我们进场会遇到检索操作.这个题目的任务是完成一些特定格式的检索,并输出符合条件的数据库中的所有结果. 我们现在有一个数据库,维护了学生的姓名(Name),性别(Sex) ...

  4. BUPT复试专题—最长连续等差子数列(2014软院)

    题目描述   给定-个长度为N的整数数列,你需要在其中找到最长的连续子数列的长度, 并满足这个子数列是等差的.注意公差小于或等于0的情况也是允许的. 输入 第一行为数据组数T(1~100),表示测试数 ...

  5. BUPT复试专题—奇偶求和(2014软件)

    题目描述 给出N个数,求出这N个数,奇数的和以及偶数的和. 输入 第一行为测试数据的组数T(1<=T<=50).请注意,任意两组测试数据之间是相互独立的. 每组数据包括两行: 第一行为一个 ...

  6. BUPT复试专题—网络传输(2014网研)

    题目描述 网络的高效互联与智能传输是提升海量用户服务请求映射效率的重要措施.在这个任务中,你需耍在最小的传输时间内,将数据源传输到指定的网络节点中.我们给定的网络一共包含N个节点,其中节点1为数据源. ...

  7. BUPT复试专题—进程管理(2014网研)

    题目描述 在操作系统中,进程管理是非常重要的工作.每个进程都有唯一的进程标识PID.每个进程都可以启动子进程,此时我们称该它本身是其子进程的父进程.除PID为0的进程之外,每个进程冇且只冇一个父进程. ...

  8. BUPT复试专题—分数加法(2014网研)

    题目描述 求2^-a + 2^-b,其中a和b均为正整数,结果用最简分数表示 输入 第一行为测试数据的组数T (1~400).请注意,任意两组测试数据之间相互独立的.每组测试数据一行,包含两个整数a和 ...

  9. BUPT复试专题—Python List(2014)

    题目描述 在Python中,List (列表)是一种非常重要的数据结构.它与C/C++/Java中的 数组有些类似,但支持添加新元素时的动态扩展.在这个问题中,你需要处理如下 的几种对List的操作. ...

随机推荐

  1. 将find过滤添加到数组

    array=($(find . -name "*.txt"))for i in "${array[@]}"; do echo $i; done

  2. 细说unittest-1

    转自:https://www.jianshu.com/p/6c07be6d61dc 一.什么是unittest unittest是Python单元测试框架,类似于JUnit框架. unittest中有 ...

  3. 某比赛小记2- 从HTTP请求返回中获得答案

    题目:在A页面登录后,重定向到A页面,然后访问B页面,header中带一指定内容"Content":"2018",然后从response中读取answer的值. ...

  4. C#显示相机实时画面

    public partial class Form1 : Form { ICogAcqFifo mAcqFifo2;//定义一个相机对象 private ICogFrameGrabber mFrame ...

  5. adb 命令大全

    传送门 --> https://github.com/mzlogin/awesome-adb ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的 ...

  6. 原 jmeter中类似lr的场景设置

    有一天如果你们领导来一句给我测下这个首页到底能扛多少并发,并发量极限是多少,这时你不要慌不要忙,拿出jmeter神器,设置下场景,目标设置成1000,每10秒启动100个并发,等着看什么时候系统响应开 ...

  7. BZOJ 3473 字符串 ——广义后缀自动机

    这题就比较有趣了. 首先匹配一遍,然后统计子树叶子节点中包含大于等于k的节点个数(HH的项链) 然后就可以搞了. 关于合法的情况数,显然是l[i]-l[fa[i]],然后向下下传即可(YY一下). # ...

  8. 刷题总结——竞赛得分(ssoj)

    题目: 题目描述 ZZH 在经历了无数次学科竞赛的失败以后,得到了一个真理:做一题就要对一题!但是要完全正确地做对一题是要花很多时间(包括调试时间),而竞赛的时间有限.所以开始做题之前最好先认真审题, ...

  9. 【二分+扫描线乱搞】B. Producing Snow

    注意二分写法... http://codeforces.com/problemset/problem/923/B #include<cstdio> #include<string.h ...

  10. 【强化学习】百度云BCC openai gym 环境配置

    openai gym是RL算法的测试床.为了直观和便于调试,我们需要可视化界面.然而远程服务器使用openGL的问题比较棘手,这篇博客记录在百度云BCC上配置openai gym环境的注意事项. 按照 ...