样例没过却AC了!!!
查看原帖
样例没过却AC了!!!
516441
gentleman1楼主2022/10/26 20:14
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,k,m,s,t,c[110],a[110][110],w[110][110];
int main(){
	cin>>n>>k>>m>>s>>t;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			w[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>>a[i][j];
	}
	for(int i=1;i<=m;i++){
		int u,v,d;
		cin>>u>>v>>d;
		if(a[c[u]][c[v]]==0&&c[u]!=c[v])w[u][v]=min(w[u][v],d);
		if(a[c[v]][c[u]]==0&&c[u]!=c[v])w[v][u]=min(w[v][u],d);
	}
	if(c[s]==c[t]){
		cout<<-1;return 0;
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(i!=j){
				for(int k=1;k<=n;k++){
					if(j!=k&&i!=k){
						w[i][j]=min(w[i][j],w[i][k]+w[k][j]);
					}
				}
			}
		}
	}
	/*for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++)
		    cout<<w[i][j]<<" ";
		cout<<endl;
	}*/
	if(w[s][t]==99999999)cout<<-1;
	else cout<<w[s][t];
	return 0;
}
2022/10/26 20:14
加载中...