不理解 参考参考
2023-03-17 22:21:02
发布于:上海
90阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int n,k,m,s,t,c[102],g[102][102],f[102][102],u,v,d;
int main(){
scanf("%d%d%d%d%d",&n,&k,&m,&s,&t);
for(int i=1;i<=n;i)for(int j=1;j<=n;j)f[i][j]=21743822;
for(int i=1;i<=n;++i)scanf("%d",&c[i]);
for(int i=1;i<=k;i)for(int j=1;j<=k;j)scanf("%d",&g[i][j]);
for(int i=1;i<=m;++i){
scanf("%d%d%d",&u,&v,&d);
if(!g[c[v]][c[u]]&&c[v]!=c[u])f[u][v]=min(f[u][v],d);
if(!g[c[u]][c[v]]&&c[v]!=c[u])f[v][u]=min(f[v][u],d);
}
if(c[s]==c[t]){puts("-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)if(f[i][k]+f[k][j]<f[i][j])f[i][j]=f[i][k]+f[k][j];
if(f[s][t]==21743822)puts("-1");
else printf("%d",f[s][t]);
return 0;
}
这里空空如也
有帮助,赞一个