POJ1291-并查集/dfs(二)

2014-11-23 21:54:17 来源: 作者: 浏览: 29
;x;  
  •     return fa[x] = find( fa[x] );  
  • }  
  •   
  • void union_ab( int x,int y ){  
  •     int fax = find( x );  
  •     int fay = find( y );  
  •     if( rank[ fax ]>rank[ fay ] ){  
  •         fa[ fay ] = fax;  
  •         rank[ fax ] += rank[ fay ];  
  •     }  
  •     else {  
  •         fa[ fax ] = fay;  
  •         rank[ fay ] += rank[ fax ];  
  •     }  
  • }  
  •   
  • void dfs( int x,int n ){  
  •     vis[ x ] = 1;  
  •     if( x<=n ){  
  •         vis[ x+n ] = 1;  
  •         Cnt_true ++ ;  
  •         //若x是正确的,则x+n则是错误的,同时也不用再去访问。  
  •     }  
  •     else {  
  •         vis[ x-n ] = 1;  
  •         Cnt_false ++ ;  
  •     }  
  •     forint i=head[x];i!=-1;i=edge[i].next ){  
  •         int y = edge[i].v;  
  •         if( !vis[y] ){  
  •             dfs( y,n );  
  •         }  
  •     }  
  • }     
  •   
  • int main(){  
  •     int n;  
  •     while( scanf("%d",&n)==1,n ){  
  •         init( n*2 );  
  •         bool f = true;  
  •         char s1[ 24 ],s2[ 24 ],s3[ 24 ];  
  •         int x1,y1,x2,y2;  
  •         int fax,fay;  
  •         forint i=1;i<=n;i++ ){  
  •         &
  • -->

    评论

    帐  号: 密码: (新用户注册)
    验 证 码:
    表  情:
    内  容: