迪杰斯特拉算法-求图的最小路径

#include<iostream>
#include<vector>
using namespace std;

void shortestPath(vector<vector<int> > &matrix,int n){
    vector<int> final(n);
    vector<int> distance(n);

    int v;
    for (int i = 0; i < n; ++i){
        final[i] = false;
        distance[i] = matrix[0][i];
    }

    for (int j = 1; j < n; ++j){
               int min = INT_MAX;
        for (int w = 0; w < n; ++w){
            if (!final[w])
            if (distance[w] < min){ v = w; min = distance[w]; }
        }
        final[v] = true;
        for (int i = 0; i < n; ++i){
            if (!final[i] && (min + matrix[v][i] < distance[i])){
                distance[i] = min + matrix[v][i];
            }
        }
    }

    for (int i = 0; i < n; ++i){
        cout << distance[i] << endl;
    }

}
int main()
{
    int  n;


    cout << "please input a number :" << endl;
    cin >> n;
    vector<vector<int> > matrix(n, vector<int>(n,0));
    cout << "please input" << endl;
    for (int i = 0; i < n; ++i){
        for (int j = 0; j < n; ++j){
            cin>>matrix[i][j];
        }
    }

    shortestPath(matrix,n);
    return 0;
}
全部评论

相关推荐

07-23 11:37
延安大学 C++
绷不住了,晚上十点发拒信,是还在加班吗这样一想挂了好像也没什么不好
码农索隆:这个都是真人发嘛,会用到机器人定时发嘛
点赞 评论 收藏
分享
醉蟀:你不干有的是人干
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-25 17:55
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务