比赛 20111102 评测结果 AWWWWWWWWW
题目名称 麻烦的干草打包机 最终得分 10
用户昵称 magic 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2011-11-02 20:43:45
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
	int n,xt,yt,m;
	double ans;
	//const double maxlong=10000000;
	int xi[2000],yi[2000],ri[2000];
	bool flag[2000];
	int head,tail,u;
bool pd(int p,int q);	
bool pd(int p,int q)
{
	int l,r;
	r=ri[p]+ri[q];
	l=(xi[p]-xi[q])*(xi[p]-xi[q])+(yi[p]-yi[q])*(yi[p]-yi[q]);
	if (l<=r*r)
	{
		return 1;
	}
	else return 0;
}
void dfs(int p,double value);
void dfs(int p,double value)
{
	if (p==m)
	{
		printf("%0.0lf",ans);
	}
	if (p!=m)
	{
		for (int i=1;i<=n;i++)
		{
			if (pd(p,i)&&!flag[i])
			{
				flag[i]=1;
				ans+=value*ri[p]/ri[i];
				dfs(i,value*ri[p]/ri[i]);
				ans-=value*ri[p]/ri[i];
				flag[i]=0;
			}
		}
	}
}
int main()
{
	freopen("baler.in","r",stdin);
	freopen("baler.out","w",stdout);
	scanf("%d%d%d",&n,&xt,&yt);
	for (int i=1;i<=n;i++)
	{
		scanf("%d%d%d",&xi[i],&yi[i],&ri[i]);
		if (xi[i]==xt&&yi[i]==yt)
		{
			m=i;
		}
	}
	flag[1]=1;
	ans+=10000;
	dfs(1,10000);
	return 0;
}