Dijkstra算法求下图最短距离
#include <cstdlib>
#include <iostream>
using namespace std;
/*
*
*/
int e[7][7] = {
{0,0,0,0,0,0,0},
{0,0,1,12,999,999,999},
{0,999,0,9,3,999,999},
{0,999,999,0,999,5,999},
{0,999,999,4,0,13,15},
{0,999,999,999,999,0,4},
{0,999,999,999,999,999,0},
};
int p[7];
int dis[7];
int main(int argc, char** argv) {
for(int i = 1; i <= 6; i++){
dis[i] = e[1][i];
}
int min;
int minindex;
//start
for(int k = 1; k <=5 ; k++){
min = 999;
minindex = 999;
for( int i = 2; i <= 6; i++){
if(p[i] ==0 && dis[i] < min){
min = dis[i];
minindex = i;
}
}
p[minindex] = 1;
for( int i = 1; i <= 6; i++){
if(p[i] ==0){
if(dis[i]> min + e[minindex][i]){
dis[i] = min +e[minindex][i];
}
}
}
}
for(int i = 1; i <= 6; i++){
cout << dis[i] << " ";
}
cout << endl;
return 0;
}