#include <iostream>
#include <cstring>
#include <string>
#include <cstdlib>
#include <map>
#include <vector>
#include <cmath>
#include <cstdio>
#include <algorithm>
#include <iomanip>
#define INF 9999999
using namespace std;
int main()
{
int n,m;
while(cin>>n>>m)
{
int count1=0;
int mini,u,v;
int sum=0;
int mapp[205][205];
int book[205];
int dis[205];
for(int i=0;i<n;i++)//邻接矩阵
{
for(int j=0;j<n;j++)
{
if(i==j)
mapp[i][j]=0;
else
mapp[i][j]=INF;
}
}
for(int i=0;i<m;i++)
{
int a,b,c;
cin>>a>>b>>c;
if(mapp[a][b]>c)
mapp[a][b]=mapp[b][a]=c;//可能会出现同样起点和终点,但权值不同
}
int start,endi;
cin>>start>>endi;
for(int k=0;k<n;k++)//弗洛伊德算法 求最短路
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(mapp[i][j]>mapp[i][k]+mapp[k][j])
mapp[i][j]=mapp[i][k]+mapp[k][j];
}
}
}
if(mapp[start][endi]==INF)
cout << "-1\n";
else
cout << mapp[start][endi] << endl;
}
return 0;
}
邻接矩阵和弗洛伊德
最新推荐文章于 2022-03-11 00:23:22 发布