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 jjh at 2005-09-18 19:45:32 on Problem 2236
#include<stdio.h>
#include<string.h>
void main()
{
	int com[102][3],dis[101][2],num,n,d,i,op,con1,con2,sour,up,flag;
	char s[6];
	scanf("%d%d",&n,&d);
	for(i=1;i<=n;i++)
	{
		scanf("%d%d\n",&com[i][1],&com[i][2]);
		com[i][0]=0;
	}
	while(scanf("%s",s)!=EOF)
	{
		if(strcmp(s,"O")==0)
		{
			scanf("%d",&op);
			com[op][0]=1;
		}
		else 
		{
			scanf("%d%d",&con1,&con2);
			if(com[con1][0]==0||com[con2][0]==0)
				printf("FAIL\n");
			else if(((com[con1][1]-com[con2][1])*
				(com[con1][1]-com[con2][1])+
				(com[con1][2]-com[con2][2])*
				(com[con1][2]-com[con2][2]))<=d*d)
				printf("SUCCESS\n");
			else 
			{
				for(i=1;i<=n;i++)
				{
					dis[i][0]=0;
					dis[i][1]=0;
				}
				dis[con1][0]=1;
				num=1;
				up=2;
				dis[num][1]=con1;
				flag=1;
				while(flag==1&&dis[num][1]!=0)
				{
					sour=dis[num][1];
					for(i=1;i<=n;i++)
					{
						if(dis[i][0]==0&&com[i][0]==1&&
							((com[sour][1]-com[i][1])*
							(com[sour][1]-com[i][1])+
							(com[sour][2]-com[i][2])*
							(com[sour][2]-com[i][2]))<=d*d)
						{
							if(i==con2)
							{
								flag=0;
								break;
							}
							dis[i][0]=1;
							dis[up][1]=i;
							up++;
						}
					}
					num++;
				}
				if(flag==0)
					printf("SUCCESS\n");
				else printf("FAIL\n");
			}
		}
	}
}

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