| ||||||||||
| 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 | |||||||||
牛人,帮我看一下。花了很多时间了,不知哪里逻辑错误。老WA????#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: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator