题解 | #单源最短路#

单源最短路

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];
        }
    }
}
全部评论

相关推荐

把实习生当正职使昨天第一天就加班,晚上连口饭都没吃上,以后日子咋过,我不想干了
码农索隆:实习不怕忙,就怕干的活重复且没难度,要干就干那种有深度有难度的任务,这样才能快速的提升
点赞 评论 收藏
分享
仁者伍敌:牛子这些人还会点一个自动回复,boss都不带回复的
点赞 评论 收藏
分享
后来123321:别着急,我学院本大二,投了1100份,两个面试,其中一个还是我去线下招聘会投的简历,有时候这东西也得看运气
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

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