比赛 20190521热身赛 评测结果 AAAAAAAAAA
题目名称 文化之旅 最终得分 100
用户昵称 真香警告 运行时间 0.072 s
代码语言 C++ 内存使用 13.97 MiB
提交时间 2019-05-21 19:29:21
显示代码纯文本
#include<iostream>
#include<cmath>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;

int n,k,m,s,t;
int c[200],g[200][200],f[200][200];
int a,b,d;

int main(){
	freopen("culture.in","r",stdin);
    freopen("culture.out","w",stdout);
	cin>>n>>k>>m>>s>>t;//n=国家,k=文化,m=道路,s=起点,t=终点 
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			f[i][j]=99999999;
	for(int i=1;i<=n;i++) cin>>c[i];
	for(int i=1;i<=k;i++)
		for(int j=1;j<=k;j++)
			cin>>g[i][j];
	for(int i=1;i<=m;i++){
		cin>>a>>b>>d;
		if(g[c[a]][c[b]]==0) f[b][a]=d;
		if(g[c[b]][c[a]]==0) f[a][b]=d;
	}
	for(int k=1;k<=n;k++)
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)
				if(f[i][k]+f[k][j]<f[i][j]) f[i][j]=f[i][k]+f[k][j];
	if(f[s][t]==99999999) cout<<"-1"<<endl;
	else cout<<f[s][t];
	return 0;
}