求助!
查看原帖
求助!
678881
Vocaloid世末歌者楼主2023/11/4 13:45
#include<stdio.h>
#include<bits/stdc++.h>
#define N 210
#define MOD 1000000009
#define esp 1e-8
#define INF 9999999999999
#define LL long long
#define rep(i,a,b,g) for(LL i=a;i<=b;i+=g)
#define rem(i,a,b,g) for(LL i=a;i>=b;i-=g)
#define repn(i,a,b,g) for(LL i=a;i<b;i+=g)
#define remn(i,a,b,g) for(LL i=a;i>b;i-=g)
#define pll pair<LL,LL>
#define mkp(x,y) make_pair(x,y)
#define i128 __int128
#define lowbit(x) ((x)&(-(x)))
using namespace std;
LL t,l,n,c[201][201],ff[201][201],f[201][201],a[1001];
int main()
{
	t=1;
	while(t--)
	{
		cin>>l>>n;
//		cout<<l<<endl;
		rep(i,1,l,1)rep(j,1,l,1)cin>>c[i][j];
		rep(i,1,n,1)cin>>a[i];
		rep(j,1,l,1)rep(k,1,l,1)f[j][k]=INF;
		a[0]=1;
		f[2][3]=0;
		rep(i,0,n-1,1)
		{
			rep(j,1,l,1)rep(k,1,l,1)ff[j][k]=INF;
			rep(x,1,l,1)rep(y,1,l,1)
			{
				ff[a[i]][y]=min(ff[a[i]][y],f[x][y]+c[x][a[i+1]]);
				ff[x][a[i]]=min(ff[x][a[i]],f[x][y]+c[y][a[i+1]]);
				ff[x][y]=min(ff[x][y],f[x][y]+c[a[i]][a[i+1]]);
			}
			rep(x,1,l,1)rep(y,1,l,1)f[x][y]=ff[x][y];
		}
		LL mc=INF;
		rep(i,1,l,1)rep(j,1,l,1)
		{
			mc=min(mc,f[i][j]);
		}
		cout<<mc<<endl;
	}
	return 0;
}
2023/11/4 13:45
加载中...