题解 | #单源最短路#dijkstra模板题 C++

单源最短路

https://www.nowcoder.com/practice/9f15b34a2a944a7798a5340ff0dba8b7

#include <algorithm>
#include <climits>
#include <vector>
class Solution {
public:
    int findShortestPath(int n, int m, vector<vector<int> >& graph) {
        int len = graph.size();
        vector<vector<int>> g(n,vector<int>(n,INT_MAX/2));//邻接矩阵,标号从0开始
        for(int i=0;i<m;++i){
            g[graph[i][0]-1][graph[i][1]-1] = min(graph[i][2],g[graph[i][0]-1][graph[i][1]-1]); //去重边
        }
        
        vector<int> dist(n,INT_MAX/2);
        vector<int> vis(n,0);
        dist[0] = 0;//0到自己的距离为0
        for(int i=0;i<n;++i){
            int x = -1;
            for(int y=0;y<n;++y){
                if(!vis[y]&&(x==-1||dist[y]<=dist[x]))
                    x = y;
            }

            vis[x] = 1;
            for(int y=0;y<n;++y){
                dist[y] = min(dist[y], dist[x]+g[x][y]);
            }
        }

        return dist[n-1];
    }
};

全部评论

相关推荐

03-02 08:18
集美大学 Java
钱嘛数字而已:没有赛事奖项么?另外,项目经历字有点多哈,建议突出一下重点:用的什么技术,解决什么问题,达到什么效果。
大家都开始春招面试了吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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