题解 | 【模板】单源最短路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]);
        

    }

}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-01 11:47
点赞 评论 收藏
分享
迟缓的斜杠青年巴比Q...:简历被投过的公司卖出去了,我前两天遇到过更离谱的,打电话来问我有没有意向报班学Java学习,服了,还拿我学校一个学长在他们那报班学了之后干了华为OD当招牌
点赞 评论 收藏
分享
06-07 17:17
嘉兴学院 教师
心爱的idea:你孩
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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