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:哪位可以给点测试数据不? 老WA , 谢谢。。In Reply To:哪位可以给点测试数据不? 老WA , 谢谢。。 Posted by:test_acm at 2008-09-16 00:26:41 > #include <iostream> > using namespace std; > > #define N 100018 > > int p[N], r[N], rank[N]; > > int find( int x ) > { > if( x==p[x] ) > return p[x]; > else > return find( p[x] ); > } > void merge( int root1, int root2 ) > { > int x, y; > x=find( root1 ); > y=find( root2 ); > if( rank[x]>rank[y] ) > p[y] = x; > else > { > p[x] = y; > if( rank[x]==rank[y] ) > rank[y]++; > } > } > int main() > { > //freopen( "in.txt", "r", stdin ); > > int n, k, scena; > char c; > int i, j; > int x, y; > int a, b; > > scanf( "%d", &scena ); > > while(scena--) > { > scanf( "%d %d", &n, &k ); > getchar(); > for( i=1; i<=n; i++ ) > { > p[i] = i; > r[i] = i; > } > memset( rank, 0, sizeof(rank) ); > > for( i=0; i<k; i++ ) > { > scanf( "%c %d %d",&c, &x, &y ); > getchar(); > > a=find(x); > b=find(y); > > if( c=='D' ) > { > if( r[x] != x ) > merge( r[x], b ); > else > r[x] = b; > > if( r[y] != y ) > merge( r[y], a ); > else > r[y] = a; > } > > else if( c=='A' ) > { > if( a==b ) > { > printf( "In the same gang.\n" ); > > } > else if( a!=b &&( a!=r[a]||b!=r[b] ) ) > { > 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