/*Dijkastra算法求最短路径*/
#include <iostream>
using namespace std;
int main()
{
int book[10];
int dis[10];
int e[10][10];
int inf=999999999;
int n,m,t1,t2,a,u;
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==j)
e[i][j]=0;
else
e[i][j]=inf;
}
}
for(int i=1;i<=m;i++){
cin>>t1>>t2>>a;
e[t1][t2]=a;
}
for(int i=1;i<=n;i++)
dis[i]=e[1][i];
for(int i=2;i<=n;i++)
book[i]=0;
book[1]=1;
//Dijkstra算法核心语句
for(int i=1;i<=m-1;i++){
int min=inf;
for(int j=2;j<=n;j++){
if(dis[j]<min&&book[j]==0){
u=j;
min=dis[j];
}
}
book[u]=1;
for(int j=1;j<=n;j++){
if(e[u][j]<inf){
if(dis[j]>dis[u]+e[u][j])
dis[j]=dis[u]+e[u][j];
}
}
}
for(int i=1;i<=n;i++)
cout<<dis[i]<<endl;
return 0;
}
Dijkastra算法求最短路径
最新推荐文章于 2024-02-03 20:43:44 发布