Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:非种类并查集写法In Reply To:非种类并查集写法 Posted by:omggmo at 2017-02-26 18:28:37 > v#include <iostream> > #include <cstdio> > #include <cstring> > #include <algorithm> > using namespace std; > const int N = 100100; > int op[N],c[N]; > int n,m; > int _find( int a ) > { > if( a==c[a] ) > return a; > return c[a]=_find( c[a] ); > } > int main() > { > int t; > scanf("%d",&t); > while( t-- ) > { > scanf("%d%d",&n,&m); > for( int i=1;i<=n;i++ ) > { > c[i] = i; > op[i] = 0; > } > if( n==2 ) > { > op[1] = 2; > op[2] = 1; > } > while( m-- ) > { > char order[5]; > int a,b; > scanf("%s%d%d",order,&a,&b); > if( order[0]=='D' ) > { > if( op[a]==0 ) > op[a] = _find( b ); > if( op[b]==0 ) > op[b] = _find( a ); > int fa_a = _find(a),fa_b = _find(b); > c[fa_a] = _find( op[b] ); > c[fa_b] = _find( op[a] ); > } > if( order[0]=='A' ) > { > if( _find(a)==_find(b) ) > printf("In the same gang.\n"); > else if( _find(a)==_find(op[b])||_find(b)==_find(op[a]) ) > printf("In different gangs.\n"); > else > printf("Not sure yet.\n"); > } > } > } > return 0; > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator