| ||||||||||
| 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