ACM: 最近公共祖先问题 图论题
来源:互联网 发布:淘宝网左轮吉他直播 编辑:程序博客网 时间:2024/05/22 03:38
问题描述:
设计一个算法,对于给定的树中2个结点返回它们的最近公共祖先。
编程任务:
对于给定的树,和树中结点对,编程计算结点对的最近公共祖先。
数据输入:
由文件input.txt给出输入数据。第一行有1个正整数n,表示给定的树有n个顶点,编号为1,2,…,n。编号为1的顶点是树根。接下来的n 行中,第i+1 行描述与i个顶点相关联的子结点的信息。每行的第一个正整数k表示该顶点的儿子结点数。其后k个数中,每1 个数表示1 个儿子结点的编号。当k=0时表示相应的结点是叶结点。文件的第n+2 行是1 个正整数m,表示要计算最近公共祖先的m个结点对。接下来的m行,每行2个正整数,是要计算最近公共祖先的结点编号。
结果输出:
将编程计算出的m个结点对的最近公共祖先结点编号输出到文件output.txt。每行3 个
正整数,前2 个是结点对编号,第3 个是它们的最近公共祖先结点编号。
输入文件示例 输出文件示例
input.txt
12
3 2 3 4
2 5 6
0
0
2 7 8
2 9 10
0
0
0
2 11 12
0
0
5
3 11
7 12
4 8
9 12
8 10
output.txt
3 11 1
7 12 2
4 8 1
9 12 6
8 10 2
解题思路: (节点数目n, 1编号的根)
代码:
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
#define MAX 105
struct node
{
}edges[MAX*MAX];
int n, m;
int p[MAX][20], deep[MAX];
int first[MAX], num;
inline void add(int u,int v)
{
}
void read_graph()
{
}
void dfs(int u)
{
}
int LCA(int x,int y)
{
}
int main()
{
//
}
- ACM: 最近公共祖先问题 图论题
- ACM: 最近公共祖先问题LCA 图论题 …
- ACM: 最近公共祖先tarjan poj 1986
- ACM: 最大流问题 图论题 poj 2263
- ACM: 图论题 poj 3308 最大流问题
- ACM: 图论题 poj 1149 网络流问题
- ACM: 闭包问题 图论题 (书上练习)
- ACM: 图论题 poj3259 bellman_ford…
- ACM: 图论题 poj 1135
- ACM: 图论题 poj 3…
- ACM: 图论题 poj 1…
- ACM: 图论题 poj 1…
- ACM: 图论题 BFS + STL + priority…
- ACM: 图论题 poj 2240 (floyd + ST…
- ACM: 匈牙利算法 图论题 poj 3041 …
- ACM: 差分约束 图论题 poj 2983 sp…
- ACM: 有向欧拉图 图论题 poj 1386 …
- ACM: 图论题 poj 3177 同 3352
- ACM: 图论题 poj 1135
- ACM: 图论题 poj 1161 (把图重建成…
- spark-graphx新的里程碑GraphDataFrames
- ACM: 闭包问题 图论题 (书上练习)
- ACM: 广搜 图论题 poj 1708
- ACM: 最近公共祖先问题 图论题
- ACM: 无向图的强连通分量 图论题 p…
- ACM: 浙江省赛题目 22:00 ~ 3:00 (…
- 2012年广东ACM省赛赛后总结
- ACM: 动态规划题 toj 1511
- ACM: 动态规划题 toj 1545
- ACM: 简单DP 动态规划题 toj 1547
- ACM: DP训练好题 动态规划题 poj 1…
- ACM: 0-1背包变形 动态规划题 toj …