比赛 20111102 评测结果 AAAAAAAAAA
题目名称 麻烦的干草打包机 最终得分 100
用户昵称 风华正茂 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2011-11-02 21:45:31
显示代码纯文本
#include<fstream>
#include<iomanip>
using namespace std;
ifstream cin("baler.in");
ofstream cout("baler.out");
int N,xt,yt,a[1053][3],zhong,shi,b[1055][1053]={0},tot=0,x[1055]={0};
void zhuan(int p)
{
	int i,j,cod=0;
	for(i=1;i<=N;i++)
	{
		int s,l;
		s=(a[p][0]-a[i][0])*(a[p][0]-a[i][0])+(a[p][1]-a[i][1])*(a[p][1]-a[i][1]);
		l=(a[p][2]+a[i][2])*(a[p][2]+a[i][2]);
		if(s==l)
		{
			cod=0;
			for(j=b[i][0];j>0;j--)
			{
				if(b[i][j]==p)
					cod=1;
			}
			if(cod==0)
			{
				b[p][0]++;
				b[p][b[p][0]]=i;
				zhuan(i);
			}
		}
	}
}
void jie(int zhongdian)
{
	int i,j;
	if(zhongdian!=shi)
	{
		for(i=1;i<=N;i++)
		{
			for(j=1;j<=b[i][0];j++)
			{
				if(b[i][j]==zhongdian)
				{
					x[tot]=zhongdian;
					tot++;
					jie(i);
				}
			}
		}
	}
}
int main()
{
	int i,j;
	cin>>N>>xt>>yt;
	for(i=1;i<=N;i++)
	{
		cin>>a[i][0]>>a[i][1]>>a[i][2];
		if(a[i][0]==xt&&a[i][1]==yt)
			zhong=i;
		if(a[i][0]==0&&a[i][1]==0)
			shi=i;
	}
	zhuan(shi);
	jie(zhong);
	x[tot]=shi;
	double zhuang[1052],zong=10000,bi,p1,p2;
	zhuang[tot]=10000;
	for(i=tot;i>0;i--)
	{
		p1=a[x[i]][2];
		p2=a[x[i-1]][2];
		bi=p1/p2;
		if(bi<0)
			bi=-bi;
		zhuang[i-1]=zhuang[i]*bi;
		zong=zong+zhuang[i-1];
	}
	cout<<setiosflags(ios::fixed)<<setprecision(0)<<zong<<endl;
	return 0;
}