`
925695531
  • 浏览: 22390 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

poj1330 解题报告

 
阅读更多

题意:最近公共祖先

题解:就是最近公共祖先吧。。

代码:用裸的在线算法,就想写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离线算法

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics