#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<set>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
int n,m;
int g[205][205];
int main(){
freopen("最短路_Floyed.in","r",stdin);
freopen("最短路_Floyed.out","w",stdout);
//初始化
memset(g,0x3f,sizeof(g));
scanf("%d",&n);
//点阵图:
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
scanf("%d",&g[i][j]);
}
}
//边:
int a,b,c;
scanf("%d",&m);
for(int i=1;i<=m;i++){
scanf("%d%d%d",&a,&b,&c);
g[a][b]=c;
//若为无向图:g[b][a]=c;
}
//直接在数据中处理
for(int k=1;k<=n;k++){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
//松弛
if(g[i][j]>g[i][k]+g[k][j]){
g[i][j]=g[i][k]+g[k][j];
}
}
}
}
scanf("%d%d",&a,&b);
printf("%d\n",g[a][b]);
return 0;
}
最短路——Floyed算法
最新推荐文章于 2020-05-15 15:06:22 发布