POJ 1330:Nearest Common Ancestors
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 20940 | Accepted: 11000 | 
Description
 
 In the figure, each node is labeled with an integer from {1, 2,...,16}. Node 8 is the root of the tree. Node x is an ancestor of node y if node x is in the path between the root and node y. For example, node 4 is an ancestor of node 16. Node 10 is also an ancestor
of node 16. As a matter of fact, nodes 8, 4, 10, and 16 are the ancestors of node 16. Remember that a node is an ancestor of itself. Nodes 8, 4, 6, and 7 are the ancestors of node 7. A node x is called a common ancestor of two different nodes y and z if node
x is an ancestor of node y and an ancestor of node z. Thus, nodes 8 and 4 are the common ancestors of nodes 16 and 7. A node x is called the nearest common ancestor of nodes y and z if x is a common ancestor of y and z and nearest to y and z among their common
ancestors. Hence, the nearest common ancestor of nodes 16 and 7 is node 4. Node 4 is nearer to nodes 16 and 7 than node 8 is.
For other examples, the nearest common ancestor of nodes 2 and 3 is node 10, the nearest common ancestor of nodes 6 and 13 is node 8, and the nearest common ancestor of nodes 4 and 12 is node 4. In the last example, if y is an ancestor of z, then the nearest
common ancestor of y and z is y.
Write a program that finds the nearest common ancestor of two distinct nodes in a tree.
Input
N. Each of the next N -1 lines contains a pair of integers that represent an edge --the first integer is the parent node of the second integer. Note that a tree with N nodes has exactly N - 1 edges. The last line of each test case contains two distinct integers
whose nearest common ancestor is to be computed.
Output
Sample Input
2
16
1 14
8 5
10 16
5 9
4 6
8 4
4 10
1 13
6 15
10 11
6 7
10 2
16 3
8 1
16 12
16 7
5
2 3
3 4
3 1
1 5
3 5
Sample Output
4
3
并查集。之前在hihoCoder第十二周做过类似的。
代码:
#include <iostream>
#include <vector>
#include <string>
#include <cstring>
#include <algorithm>
#pragma warning(disable:4996)
using namespace std; int father[10005]; void result(int test1,int test2)
{
int node2=test2;
while(father[test1]!=test1)
{
node2=test2;
while(father[node2]!=node2)
{
if(test1==node2)
{
cout<<test1<<endl;
return;
}
node2=father[node2];
}
test1=father[test1];
}
cout<<test1<<endl;
return;
} int main()
{
int count;
cin>>count; while(count--)
{
int fa,son,node,i;
cin>>node; for(i=1;i<10005;i++)
{
father[i]=i;
} for(i=1;i<=node-1;i++)
{
cin>>fa>>son;
father[son]=fa;
}
int test1,test2;
cin>>test1>>test2; result(test1,test2);
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
POJ 1330:Nearest Common Ancestors的更多相关文章
- 【51.64%】【POJ 1330】Nearest Common Ancestors
		Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 26416 Accepted: 13641 Description A roote ... 
- 【Poj 1330】Nearest Common Ancestors
		http://poj.org/problem?id=1330 题目意思就是T组树求两点LCA. 这个可以离线DFS(Tarjan)-----具体参考 O(Tn) 0ms 还有其他在线O(Tnlogn) ... 
- 【POJ 1330】 Nearest Common Ancestors
		[题目链接] 点击打开链接 [算法] 倍增法求最近公共祖先 [代码] #include <algorithm> #include <bitset> #include <c ... 
- POJ 1330 Nearest Common Ancestors(Tree)
		题目:Nearest Common Ancestors 根据输入建立树,然后求2个结点的最近共同祖先. 注意几点: (1)记录每个结点的父亲,比较层级时要用: (2)记录层级: (3)记录每个结点的孩 ... 
- POJ 1330 Nearest Common Ancestors 【LCA模板题】
		任意门:http://poj.org/problem?id=1330 Nearest Common Ancestors Time Limit: 1000MS Memory Limit: 10000 ... 
- POJ 1330 Nearest Common Ancestors  倍增算法的LCA
		POJ 1330 Nearest Common Ancestors 题意:最近公共祖先的裸题 思路:LCA和ST我们已经很熟悉了,但是这里的f[i][j]却有相似却又不同的含义.f[i][j]表示i节 ... 
- POJ - 1330 Nearest Common Ancestors(基础LCA)
		POJ - 1330 Nearest Common Ancestors Time Limit: 1000MS Memory Limit: 10000KB 64bit IO Format: %l ... 
- POJ 1330 Nearest Common Ancestors / UVALive 2525 Nearest Common Ancestors (最近公共祖先LCA)
		POJ 1330 Nearest Common Ancestors / UVALive 2525 Nearest Common Ancestors (最近公共祖先LCA) Description A ... 
- POJ.1330 Nearest Common Ancestors (LCA 倍增)
		POJ.1330 Nearest Common Ancestors (LCA 倍增) 题意分析 给出一棵树,树上有n个点(n-1)条边,n-1个父子的边的关系a-b.接下来给出xy,求出xy的lca节 ... 
随机推荐
- 树 插件 ztree 的基本用法
			因业务需要 用到 ztree 插件 第一次用tree插件上手有点难度 官网 http://www.treejs.cn/v3/main.php#_zTreeInfo 第一步:初始化树,树的所有数据从后台 ... 
- mysql innodb cluster 无感知集群
			MySQL 8.0.12 innodb cluster 高可用集群部署运维管理手册 Innodb cluster 原理介绍 Innodb cluster 利用组复制的 pxos 协议,保障数据一致性 ... 
- Python学习笔记之面向对象
			下面是初步总结的Python的面向对象的参数定义,后面会逐渐完善面向对象的相关知识. 
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:制作一个大按钮
			<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ... 
- QQ企业通--客户端登陆模块设计---知识点2
			Maximizable 属性 获取一个值,该值指定窗口是否可以最大化. fromBorderstyle 成员名称 说明 None 无边框. Fi ... 
- for 循环遍历数据,根据不同的条件判断动态渲染页面!
			整体的逻辑为:for 循环遍历出数据,在for 循环里判断,根据不同的条件渲染 一.html页面结构 二.css就不再写了 三.JS逻辑代码 var listGroup='' ;k<data.i ... 
- NoNodeAvailableException异常的解决
			Elasticsearch 相关学习,昨天还好好的,今天就出错了!!! 完整异常为 : NoNodeAvailableException[None of the configured nodes ar ... 
- CentOS 下 安装 nginx 执行配置命令 ./configure 报错
			CentOS 下 安装 nginx 执行配置命令 ./configure --prefix=/opt/nginx --sbin-path=/usr/bin/nginx 时提示以下错误: checkin ... 
- 手把手教你如何在Presentation中拿高分
			掐指一算,留学生们最近应该马上遇到Presentation作业.一般来说,这类的任务会占最终成绩的20-30%,对于期末成绩有一定的影响,如果想拿高分,就需要好好的准备.所以本文算是系列里的第一篇(扫 ... 
- zabbix_get工具基础使用
			zabbix_get工具基础使用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.zabbix_get工具概述 我们在使用zabbix server监控zabbix agent端 ... 
