比赛 20101110 评测结果 EEEEEEEEEEEEEEEEEEEE
题目名称 移动服务 最终得分 0
用户昵称 郭乾乐 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2010-11-10 22:01:16
显示代码纯文本
#include<iostream>
#include<fstream>
using namespace std;
int f[1002][202][202];
int main()
{
	ifstream fin("service.in");
	ofstream fout("service.out");
	int a[202][202],work[1002],l,n,i,j,k,r;
	fin>>l>>n;
	for(i=1;i<=l;i++)
		for(j=1;j<=l;j++)
		    fin>>a[i][j];
	for(i=1;i<=n;i++)
		fin>>work[i];
	f[1][1][2]=0;
	work[0]=3;
	for(i=1;i<=n;i++)
		for(j=1;j<=l;j++)
			for(k=1;k<=l;k++)
			{
				if(i!=k)
				{
				r=117777790;
				if(r>(f[i-1][j][k]+a[work[i-1]][work[i]]))r=f[i-1][j][k]+a[work[i-1]][work[i]];
				if(r>(f[i-1][j][k]+a[j][work[i]]))r=f[i-1][j][k]+a[j][work[i]];
				if(r>(f[i-1][j][k]+a[k][work[i]]))r=f[i-1][j][k]+a[k][work[i]];
			    f[i][j][k]=r;
				}
			}
    r=117777790;
	for(i=1;i<=l;i++)
		for(j=1;j<=l;j++)
			if(f[n][i][j]!=0&&f[n][i][j]<r)
				r=f[n][i][j];
	fout<<r;
	return 0;
}