题解 | #单源最短路#

单源最短路

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

有向图就罢了,重边是什么鬼?
解法: dijkstra, 时间复杂度:O(V^2)

```
class Solution {
public:
int findShortestPath(int n, int m, vector<vector<int> >& graph) {
// write code here
vector<vector<int>> e(n + 1, vector<int>(n + 1, INT_MAX));
vector<int> dis(n + 1, INT_MAX);
vector<bool> visit(n + 1, false);</bool></int></int></int></int>

    for (auto& g : graph) {
        e[g[0]][g[1]] = min(g[2], e[g[0]][g[1]]); // 处理重边
    }
    dis[1] = 0;
    for (int i = 1; i <= n; i++) {
        int u = -1, minn = INT_MAX;
        for (int j = 1; j <= n; j++) {
            if (!visit[j] && dis[j] < minn) {
                minn = dis[j];
                u = j;
            }
        }
        if (u == -1) {
            break;
        }
        visit[u] = true;
        for (int v = 1; v <= n; v++) {
            if (!visit[v] && e[u][v] != INT_MAX) {
                if (dis[v] > dis[u] + e[u][v]) {
                    dis[v] = dis[u] + e[u][v];
                }
            }
        }
    }
    return dis[n] == INT_MAX ? -1 : dis[n];
}

};
```</vector<int></vector</int>

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-11 11:16
点赞 评论 收藏
分享
鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
06-26 17:24
已编辑
宁波大学 golang
迷失西雅图:别给,纯kpi,别问我为什么知道
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-08 10:39
一个证都没&nbsp;我能填什么
程序员小白条:别人有,你为什么没有,还是这个道理,社会就是比较,竞争,淘汰,你要安逸,那么就要做好淘汰的准备
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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