| ||||||||||
| 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 | |||||||||
水过一百题,虽然很多都是水题,但是还是很开心,贴出代码(大牛轻喷)#include <stdio.h>
#define MAXN 1010
struct POINT
{
int x,y;
};
int n,count,d;
struct POINT node[MAXN];
int father[MAXN],repaired[MAXN];
int dis(int x,int y)
{
int tempx=node[x].x-node[y].x,tempy=node[x].y-node[y].y;
if ((tempx*tempx+tempy*tempy)<=d*d)
{
return 1;
}
else return 0;
}
int find_set(int x)
{
if(x!=father[x])
father[x]=find_set(father[x]);
return father[x];
}
void init()
{
int i;
for(i=1;i<=n;i++)
father[i]=i;
}
void union_set(int x,int y)
{
x=find_set(x);
y=find_set(y);
father[y]=father[x];
}
int main()
{
int i,x,y;
char cmd;
count=0;
scanf("%d %d",&n,&d);
init();
for (i=1;i<=n;i++)
{
scanf("%d %d",&node[i].x,&node[i].y);
}
while (scanf(" %c",&cmd)!=EOF)
{
if (cmd=='O')
{
scanf("%d",&x);
for (i=0;i<count;i++)
{
if(dis(repaired[i],x))
union_set(repaired[i],x);
}
repaired[count++]=x;
}
else{
scanf("%d %d",&x,&y);
if (find_set(x)==find_set(y))
{
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