#include<bits/stdc++.h>
using namespace std;
#define inf 99999
int mp[555][555]; // 地图
int n,m,s,d; // 顶点数 边数 起点 终点
void floyd() // floyd算法核心语句
{
for(int k=0;k<n;k++)
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
if(mp[i][j]>mp[i][k]+mp[k][j])
{
mp[i][j]=mp[i][k]+mp[k][j];
}
}
}
int main()
{
int x,y,len,w;
cin>>n>>m>>s>>d;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
mp[i][j]=inf; // 对地图进行初始化
}
for(int i=0;i<m;i++)
{
cin>>x>>y>>len;
mp[x][y]=len; // 对路径长度进行赋值
}
floyd();
cout<<mp[s][d]; // 输出所求两点之间的最短距离
return 0;
}
Floyd算法求最短路径
最新推荐文章于 2023-03-13 21:49:48 发布