| ||||||||||
| 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 | |||||||||
牛人帮我看一下为什么会runtime error谢谢,实在找不出了#include<stdio.h>
#include<memory.h>
#include<math.h>
#include<string.h>
#define Size 2000
struct DisjointSet {
long pi[Size], rank[Size];
DisjointSet()
{
for (long i = 0; i < Size; i++) {
pi[i] = i;
rank[i] = 0;
}
}
long find(long x)
{
while (x != pi[x])
{
x=pi[x];
}
return pi[x];
}
long merge(long x, long y)
{
x = find(x);
y = find(y);
if (rank[x] > rank[y]) {
pi[y] = x;
return x;
} else {
pi[x] = y;
if (rank[x] == rank[y]) rank[y]++;
return y;
}
}
}s;
int main()
{
long i,n,a[Size][Size],k,k1,k2,j,flag[Size],num;
bool rec[Size];
double x[Size],y[Size],d;
char str[100];
scanf("%d %lf",&n,&d);
for (i=1;i<=n;i++)
{
scanf("%lf %lf",&x[i],&y[i]);
for (j=1;j<=i-1;j++)
{
if (sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]))<=d)
{
a[i][j]=1;
a[j][i]=1;
}
else
{
a[i][j]=0;
a[j][i]=0;
}
}
}
for (i=1;i<=n;i++)
rec[i]=false;
num=0;
while(scanf("%s",&str)!=NULL)
{
if (strcmp(str,"O")==0)
{
scanf("%d",&k);
if (rec[k])
continue;
rec[k]=true;
num++;
flag[num]=k;
for (i=1;i<=num-1;i++)
if (a[k][flag[i]]==1)
s.merge(k,flag[i]);
}
else
{
scanf("%d %d",&k1,&k2);
k1=s.find(k1);k2=s.find(k2);
if (k1==k2)
printf("SUCCESS\n");
else
printf("FAIL\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