题解 | #单源最短路#

单源最短路

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

public class Solution {
    public int findShortestPath(int n, int m, int[][] graph) {
        int[] dp = new int[n + 1];
        Arrays.fill(dp, Integer.MAX_VALUE);
        dp[1] = 0;
        for (int i = 1; i <= n; i++) {//遍历中间节点
            for (int j = 0; j < m; j++) {
                if (graph[j][0] == i) {
                    int k = graph[j][1];
                    int path = -1;//记录中间节点为i的1~k的距离
                    if (dp[i] == Integer.MAX_VALUE) {
                        path = Integer.MAX_VALUE;
                    } else {
                        path = dp[i] + graph[j][2];//1~i的距离+i~k的距离
                    }
                    dp[k] = Math.min(dp[k], path);//更新1~k的距离
                }
            }
        }
        if (dp[n] == Integer.MAX_VALUE) {
            return -1;
        } else {
            return dp[n];
        }
    }
}
全部评论

相关推荐

黑皮白袜臭脚体育生:春节刚过就开卷吗?哈基馆,你这家伙......
点赞 评论 收藏
分享
头发暂时没有的KFC总裁:找廉价劳动力罢了
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务