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

help me!!!WA

Posted by laddiexu at 2006-05-03 23:09:56 on Problem 2236
#include<cstdio>
#include<fstream>
#include<vector>
using namespace std;

struct co
{
long long int x;
long long int y;
};

class UFset
{
public:
        UFset(int s) ;
	int find(int i);
	void unionset(int root1,int root2);
private:
int size;
int* parent;
};
//-----------------------------------------
UFset :: UFset ( int s ) 
{   size = s;					
    parent = new int [size+1];
    for ( int i = 0; i <= size; i++ ) parent[i] = -1;
    return;
}

//-----------------------------------------
int UFset::find(int i)
{
    int j;
    for ( j = i; parent[j] >= 0; j = parent[j]);
    while ( i != j )       
    { 
        int temp = parent[i];
        parent[i] = j;
        i = temp;
    }
    return j;
}

//------------------------------------------
void UFset:: unionset(int root1,int root2)
{
    int temp = parent[root1] + parent[root2];
    if ( parent[root2] < parent[root1] )
    {
        parent[root1] = root2;      
        parent[root2] = temp;
    }
    else 
    {
        parent[root2] = root1;      
        parent[root1] = temp;       
    }
	return;
}
//=======================================================




int main()
{
       // freopen("in.txt","r",stdin);
	int n,i,j;
        long long int d;
        scanf("%d%LLd",&n,&d);
	vector<co> data(n+1);
	for( i=1;i<=n;i++)
		scanf("%LLd%LLd",&data[i].x,&data[i].y);
        vector<bool> pa(n+1,0);
        UFset  com(n);
	char c;
	int num1,num2;
	while(scanf("%c",&c)==1)
	{
	    if(c=='O')
            {
                scanf("%d",&num1);
                pa[num1]=1;
                for(j=1;j<=n;j++)
                {
                    if(j==num1) continue;
                    long long int temp=(data[num1].x-data[j].x)*(data[num1].x-data[j].x)+(data[num1].y-data[j].y)*(data[num1].y-data[j].y);
                    if(temp<=d*d&&pa[j]) com.unionset(com.find(num1),com.find(j));
                }
            }
            else if(c=='S')
		{
                    scanf("%d%d",&num1,&num2);
                    if(num1==num2)
                    {
                        if(pa[num1]) printf("SUCCESS\n"); else printf("FAIL\n");
                    }
                    else if(com.find(num1)==com.find(num2)) printf("SUCCESS\n"); else printf("FAIL\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