LCA最近公共祖先(POJ1330)
Posted 树的种子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LCA最近公共祖先(POJ1330)相关的知识,希望对你有一定的参考价值。
题目链接:http://poj.org/problem?id=1330
解题报告:
先将一个子节点,深搜每一个根节点,并标记。
然后深索另一个子节点,当发现访问过了,就找到了最近的公共祖先。
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; const int maxn = 10005; bool vis[maxn]; int father[maxn]; int main() { int t; scanf("%d",&t); while(t--) { memset(father,-1,sizeof(father)); memset(vis,0,sizeof(vis)); int n; scanf("%d",&n); int a,b; for(int i=0;i<n-1;i++) { scanf("%d%d",&a,&b); father[b]=a; } scanf("%d%d",&a,&b); while(b!=-1) { vis[b]=true; b=father[b]; } while(!vis[a]) a=father[a]; printf("%d\n",a); } return 0; }
以上是关于LCA最近公共祖先(POJ1330)的主要内容,如果未能解决你的问题,请参考以下文章
POJ-1330&HDU-2586 最近公共祖先(不带权+带权)树剖式写法求LCA
POJ 1330 Nearest Common Ancestors 最近公共祖先