Dijkstra算法求最短距离

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;
}



猜你喜欢

转载自blog.csdn.net/TRUE_LOVE1314/article/details/46331901