Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

哪位可以给点测试数据不? 老WA , 谢谢。。

Posted by test_acm at 2008-09-16 00:26:41 on Problem 1703
#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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator