比赛 |
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();
}