记录编号 |
79209 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[USACO Mar08] 麻烦的干草打包机 |
最终得分 |
100 |
用户昵称 |
spadeK |
是否通过 |
通过 |
代码语言 |
C |
运行时间 |
0.012 s |
提交时间 |
2013-11-05 10:23:04 |
内存使用 |
0.32 MiB |
显示代码纯文本
#include <stdio.h>
#include <math.h>
typedef struct
{
int x;int y;int r;
double v;double sum;
int flag;
}circle;
circle s[1055];
int n,X_t,Y_t,finded=0,ansdown;
search(int down)
{
int i;
if(s[down].x==X_t&&s[down].y==Y_t)
{
finded=1;
ansdown=down;
return ;
}
s[down].flag=1;
for(i=0;i<n;i++)
{
if(s[i].flag!=1)
{
if((s[down].x-s[i].x)*(s[down].x-s[i].x)+(s[down].y-s[i].y)*(s[down].y-s[i].y)
==(s[down].r+s[i].r)*(s[down].r+s[i].r))
{
s[i].v=s[down].v*s[down].r/s[i].r;
s[i].sum=s[down].sum+s[i].v;
search(i);
}
if(finded==1)
break;
}
}
}
int main()
{
freopen("baler.in","r",stdin);
freopen("baler.out","w",stdout);
int i,t=0;
memset(s,0,sizeof(s));
scanf("%d%d%d",&n,&X_t,&Y_t);
for(i=0;i<n;i++)
{
scanf("%d%d%d",&s[i].x,&s[i].y,&s[i].r);
if(s[i].x==0&&s[i].y==0)
t=i;
}
s[t].v=s[t].sum=10000;
search(t);
printf ("%d\n",(int)(s[ansdown].sum));
return 0;
}