poj1523 解题报告(三)

2012-11-30 12:26:30 · 作者: · 浏览: 889

 

    int  main()

    {

    int  i , j , Max ;

    int  start , end , cnt ;

    memset( head , -1 , sizeof( head ) ) ;

    Count = 0 , cnt = 1 ;

    while( scanf( "%d" , & start ) && start )

    {

    memset( head , -1 , sizeof( head ) ) ;

    Count = 0 ;

    Max = 0 ;

    if( start > Max ) Max = start ;

    scanf( "%d" , & end ) ;

    if( end  > Max ) Max  = end  ;

    addedge( start , end ) ;

    addedge( end , start ) ;

    while( scanf( "%d" , & start ) && start )

    {

    if( start > Max ) Max = start ;

    scanf( "%d" , & end ) ;

    if( end  > Max )  Max = end ;

    addedge( start , end ) ;

    addedge( end , start ) ;

    }

    for( i = 2 ; i <= Max ; i ++ ) ans[i] = 1 ;

    ans = 0 ;

    tarjan( Max ) ;

    printf( "Network #%d\n" , cnt ) ;

    int flag = 0 ;

    for( i = 1 ; i <= Max ; i ++ )

    if( ans[i] > 1 )

    {

    printf( "  SPF node %d leaves %d subnets\n" , i , ans[i] ) ;

    flag = 1 ;

    }

    if( !flag ) printf( "  No SPF nodes\n" ) ;

    printf( "\n" ) ;

    cnt ++ ;

    }

    return 0 ;