记录编号 79209 评测结果 AAAAAAAAAA
题目名称 [USACO Mar08] 麻烦的干草打包机 最终得分 100
用户昵称 GravatarspadeK 是否通过 通过
代码语言 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;
}