zoukankan      html  css  js  c++  java
  • 849. Dijkstra求最短路 I(模板)

    给定一个n个点m条边的有向图,图中可能存在重边和自环,所有边权均为正值。

    请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出-1。

    输入格式

    第一行包含整数n和m。

    接下来m行每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。

    输出格式

    输出一个整数,表示1号点到n号点的最短距离。

    如果路径不存在,则输出-1。

    数据范围

    1n5001≤n≤500,
    1m1051≤m≤105,
    图中涉及边长均不超过10000。

    输入样例:

    3 3
    1 2 2
    2 3 1
    1 3 4
    

    输出样例:

    3

    代码:
    import java.util.Arrays;
    import java.util.Scanner;
    
    public class Main{
            static final int N=505;
            static final int INF=(int)1e9+5;
            static int n,m;
            static int g[][]=new int[N][N];
            static boolean vis[]=new boolean[N];
            static int dis[]=new int[N];
            static int dijkstra(){
                    Arrays.fill(dis, INF);
                    dis[1]=0;
                    for(int i=0;i<n;i++){
                            int t=-1;
                            for(int j=1;j<=n;j++){
                                    if(!vis[j] && (t==-1||dis[t]>dis[j]))
                                            t=j;
                            }
                            vis[t]=true;
                            for(int j=1;j<=n;j++){
                                    dis[j]=Math.min(dis[j], dis[t]+g[t][j]);
                            }
                    }
                    if(dis[n]==INF) return -1;
                    else return dis[n];
            }
            public static void main(String[] args) {
                    Scanner scan=new Scanner(System.in);
                    n=scan.nextInt();
                    m=scan.nextInt();
                    for(int i=0;i<N;i++) Arrays.fill(g[i], INF);
                    while(m-->0){
                            int a=scan.nextInt();
                            int b=scan.nextInt();
                            int c=scan.nextInt();
                            g[a][b]=Math.min(g[a][b], c);
                    }
                    System.out.println(dijkstra());
            }
    }
  • 相关阅读:
    SAMBA服务初学练习
    NFS与AutoNFS实例
    NTP服务简介
    DHCP服务简单搭建步骤
    HBase文档操作--练习篇
    Hadoop体系结构管理
    HBase表结构设计--练习篇
    HBase备份恢复练习
    MongoDB管理练习
    24_BlockingQueue接口
  • 原文地址:https://www.cnblogs.com/qdu-lkc/p/12255448.html
Copyright © 2011-2022 走看看