题解 | 【模板】单源最短路2

【模板】单源最短路2

https://www.nowcoder.com/practice/7c1740c3d4ba4b3486df4847ee6e8fc7

import java.util.Scanner;
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int top = 10000 * 5000;
            int n = in.nextInt();
            int m = in.nextInt();
            int[][] graph = new int[5001][5001];

            for (int i = 0; i <= 5000; i++) {
                Arrays.fill(graph[i], top);
            }

            for (int i = 0; i < m; i++) {
                int a = in.nextInt();
                int b = in.nextInt();
                int w = in.nextInt();
                graph[a][b]  = w;
                graph[b][a] = w;
            }

            int from = 1;
            int[] pathLen = new int[5001];
            for (int i = 1; i <= 5000; i++) {
                pathLen[i] = graph[from][i];
            }
            boolean[] hasvisit = new boolean[5001];
            hasvisit[1] = true;
            for (int i = 1; i <= 5000; i++) {
                int min = top;
                int k = 1;
                for (int j = 1; j <= 5000; j++) {
                    if (!hasvisit[j] && pathLen[j] < min) {
                        min = pathLen[j];
                        k = j;
                    }
                }
                hasvisit[k] = true;
                for (int j = 1; j <= 5000; j++) {
                    if (!hasvisit[j] && min + graph[k][j] < pathLen[j]) {
                        pathLen[j] = min + graph[k][j];
                    }
                }
            }
            System.out.println(pathLen[n] == top ? "-1" : pathLen[n]);
        

    }

}

全部评论

相关推荐

06-12 17:46
门头沟学院 Java
运营你豪哥:来说重点: ​1.项目前置,时间倒序。​​ 2.​项目描述强化结果与量化效果(STAR原则里的R)。​​ ​3.个人技能精炼,明确掌握程度,突出核心。​​ ​4.增加强有力开头的个人总结部分。​​ 5.​优化教育背景(成绩排名)、合并奖项与活动。​​
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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