比赛 20100324 评测结果 AWWWW
题目名称 希望小学 最终得分 20
用户昵称 .Xmz 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2010-03-24 20:09:56
显示代码纯文本
#include <iostream>
#include <fstream>
#include <cstdio>
#include <cstring>

using namespace std;

const int oo=2000000000;
int n,b1,b2,b3,g1,g2,g3;
int x[32],y[32];
int k;
int fx[32][32],fy[32][32];

void init()
{
	freopen("hopeschool.in","r",stdin);
	freopen("hopeschool.out","w",stdout);
	scanf("%d%d%d%d%d%d%d",&n,&b1,&b2,&b3,&g1,&g2,&g3);
	for (int i=1;i<=n;i++)
		for (int j=1;j<=n;j++)
		{
			if (i!=j)
			{
				fx[i][j]=oo;
				fy[i][j]=oo;
			}
		}
	
	for (int i=1;i<=n;i++)  scanf("%d",&x[i]);
	for (int i=1;i<=n;i++)  scanf("%d",&y[i]);
	scanf("%d",&k);
	int a,b,t1,t2,t3;
	for (int i=1;i<=k;i++)
	{
		scanf("%d%d%d%d%d",&a,&b,&t1,&t2,&t3);
		fx[a][b]=b1*t1+b2*t2+b3*t3;
		fx[b][a]=b1*t1+b2*t3+b3*t2;
		fy[a][b]=g1*t1+g2*t2+g3*t3;
		fy[b][a]=g1*t1+g2*t3+g3*t2;
	}
}

void floydx()
{
	for (int k=1;k<=n;k++)
		for (int i=1;i<=n;i++)
			for (int j=1;j<=n;j++)
				if (fx[i][k]+fx[k][j]<fx[i][j])
					fx[i][j]=fx[i][k]+fx[k][j];
}

void floydy()
{
	for (int k=1;k<=n;k++)
		for (int i=1;i<=n;i++)
			for (int j=1;j<=n;j++)
				if (fy[i][k]+fy[k][j]<fy[i][j])
					fy[i][j]=fy[i][k]+fy[k][j];
}

int main()
{
	init();
	floydx();
	floydy();
	int ans=oo,np=0;
	for (int i=1;i<=n;i++)
	{
		int s=0;
		for (int j=1;j<=n;j++)
		{	
			s+=fx[j][i]*x[j];
			s+=fy[j][i]*y[j];
		}
		if (s<ans)
		{
			ans=s;
			np=i;
		}
	}
		printf("%d\n",np);
	return 0;
}