题意:最近公共祖先
题解:就是最近公共祖先吧。。
代码:用裸的在线算法,就想写tarjan了
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std ;
const int MAXN = 10005 ;
int father[MAXN] ;
int N ;
bool vis[MAXN] ;
int main()
{
int T ;
int i , j ;
int a , b ;
scanf( "%d" , & T ) ;
while( T -- )
{
scanf( "%d" , & N ) ;
for( i = 0 ; i <= N ; i ++ ) father[i] = i ;
memset( vis , 0 , sizeof( vis ) ) ;
for( i = 1 ; i < N ; i ++ )
{
scanf( "%d%d" , & a , & b ) ;
father[b] = a ;
}
scanf( "%d%d" , & a , & b ) ;
while( father[a] != a )
{
vis[a] = 1 ;
a = father[a] ;
}
vis[a] = 1 ;
while( !vis[b] )
b = father[b] ;
printf( "%d\n" , b ) ;
}
return 0 ;
}
2,tarjan离线算法