比赛 20100324 评测结果 AWWWA
题目名称 希望小学 最终得分 40
用户昵称 Oo湼鞶oO 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2010-03-24 20:26:46
显示代码纯文本
#include <fstream>

using namespace std;

short n,m,b[3],g[3],ans;
short s[30][30]={{0}};
short x[30],y[30];

void input();
void freud();
void lookfor();
void output();

int main()
{
	input();
	freud();
	lookfor();
	output();
}

void input()
{
	short i,j,k,p,q;
	ifstream fin("hopeschool.in");
	fin>>n;
	for (i=0; i<3; fin>>b[i++]);
	for (i=0; i<3; fin>>g[i++]);
	for (i=0; i<n; fin>>x[i++]);
	for (i=0; i<n; fin>>y[i++]);
	short t[30][30][3]={{{0}}};
	fin>>m;
	for (i=0; i<m; i++)
	{
		fin>>p>>q;
		p--; q--;
		for (j=0; j<3; j++)
			fin>>t[p][q][j];
		t[q][p][0]=t[p][q][0];
		t[q][p][1]=t[p][q][2];
		t[q][p][2]=t[p][q][1];
	}
	fin.close();
	
	for (i=0; i<n; i++)
		for (j=n-1; j>0; j--)
			for (k=0; k<3; k++)
				s[i][j]+=(t[i][j][k]*((b[k]*x[i])+(g[k]*y[i])));
}

void freud()
{
	short i,j,k;
	for (i=0; i<n; i++)
		for (j=0; j<n; j++)
			for (k=0; k<n; k++)
				if ((s[j][i]+s[i][k])<s[j][k])
					s[j][k]=s[j][i]+s[i][k];
}

void lookfor()
{
	short i,j;
	int t,ts=32767;
	for (i=0; i<n; i++)
	{
		t=0;
		for (j=0; j<n; j++)
			if ((s[j][i]==0)&&(i!=j))
			{
				t=32767;
				break;
			}
			else
				t+=s[j][i];
		if (t<ts)
		{
			ans=i;
			ts=t;
		}
	}
}

void output()
{
	ofstream fout("hopeschool.out");
	fout<<ans+1<<endl;
	fout.close();
}