80分求助
查看原帖
80分求助
996474
happy_banana楼主2024/10/19 22:00
#include<bits/stdc++.h>
using namespace std;
int wh[1000],pa[1000][1000],a[1000][1000],f[1000][1000];
int n,k,m,s,t,u,v,d;
int main()
{
	cin>>n>>k>>m>>s>>t;
	for(int i=1;i<=n;i++)
		cin>>wh[i];
	for(int i=1;i<=k;i++)
		for(int j=1;j<=k;j++)
			cin>>pa[i][j];
	if(pa[t][s]==1)
	{
		cout<<"-1";
		return 0;
	}
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			if(i!=j) a[i][j]=1e9;
	for(int i=1;i<=m;i++)
	{
		cin>>u>>v>>d;
		if(d<a[u][v])
		{
			if(pa[wh[u]][wh[v]]==0) a[v][u]=d;
			if(pa[wh[v]][wh[u]]==0) a[u][v]=d;	
		}
	}
	for(int i=1;i<=n;i++)
		for(int k=1;k<=n;k++)
			for(int j=1;j<=n;j++)	
				if(a[i][k]+a[k][j]<a[i][j]) a[i][j]=a[i][k]+a[k][j];
	if(a[s][t]>=1e9) cout<<"-1";
	else cout<<a[s][t];
	return 0;
}
2024/10/19 22:00
加载中...