单源最短路径算法C++简单实现
参考文章:https://www.jianshu.com/p/ff6db00ad866
#include<iostream>
using namespace std;
#define MAX 10000
int map[5][5]={
{0,4,MAX,2,MAX},
{4,0,4,1,MAX},
{MAX,4,0,1,3},
{2,1,1,0,7},
{MAX,MAX,3,7,0}
};
int main()
{
char start;
int S[5]={0},U[5];
cout<<"enter start node :"<<endl;
cin>>start;
for(int i=0;i<5;i++)
{
U[i]=map[start-'A'][i];
}
for(int i=0;i<5;i++)
{
int dim=MAX,k;
for(int j=0;j<5;j++)
{
if((S[j]==0)&&((U[j])<dim))
{
dim=U[j];
k=j;
}
}
S[k]=1;
for(int j=0;j<5;j++)
{
if(map[k][j]+dim<U[j])
U[j]=map[k][j]+dim;
}
}
for(int i=0;i<5;i++)
cout<<start<<"到"<<(char)('A'+i)<<"距离"<<U[i]<<endl;
return 0;
}
运行截图