HDU2544最短路

原创 2015年07月10日 14:36:57
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
import java.util.Stack;
import java.util.StringTokenizer;

import javax.management.Query;


public class Main {

        public static void main(String[] args) {
                InputReader in = new InputReader(System.in) ;
                PrintWriter out = new PrintWriter(System.out);

                int n , m  ;
                while((n = in.nextInt()) != 0 && (m = in.nextInt()) != 0){
                       new Task().solve(n, m, in, out) ;
                }

                out.flush() ;
        }

}

class Task{

      static  class E{
              int v ;
              int w ;
              public E(int v , int w){
                     this.v = v ;
                     this.w = w ;
              }
      }

      ArrayList<E>[] adj ;
      int[] dist ;
      boolean[] inq ;


      void solve(int n , int m , InputReader in , PrintWriter out){
           adj = new ArrayList[n+1] ;  
           for(int i = 1 ; i <= n ; i++) adj[i] = new ArrayList<E>();

           for(int i = 0 ; i < m ; i++){
                 int u = in.nextInt() ;
                 int v = in.nextInt() ;
                 int w = in.nextInt() ;
                 adj[u].add(new E(v, w)) ;
                 adj[v].add(new E(u, w)) ;
           }
           dist = new int[n+1] ;
           Arrays.fill(dist, Integer.MAX_VALUE) ;
           inq = new boolean[n+1] ;
           Arrays.fill(inq, false) ;
           dist[1] = 0 ;
           inq[1] = true ;
           Queue<Integer> que = new LinkedList<Integer>() ;
           que.add(1) ;
           while(! que.isEmpty()){
                int u = que.poll() ;
                inq[u] = false ;
                for(E e : adj[u]){
                      if(dist[u] + e.w < dist[e.v]){
                            dist[e.v] = dist[u] + e.w ;
                            if(! inq[e.v]){
                                 inq[e.v] = true ;
                                 que.add(e.v) ;
                            }
                      }
                }
           }

           out.println(dist[n]) ;
      }
} 

class InputReader{
    public BufferedReader reader;
    public StringTokenizer tokenizer;

    public InputReader(InputStream stream){
           reader = new BufferedReader(new InputStreamReader(stream), 32768);
           tokenizer = null;
    }

    public String next(){
        while(tokenizer == null || !tokenizer.hasMoreTokens()){
            try{
                tokenizer = new StringTokenizer(reader.readLine());
            }catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
        return tokenizer.nextToken();
    }

    public int nextInt() {
        return Integer.parseInt(next());
    }

}
版权声明:本文为博主原创文章,未经博主允许不得转载。

hdu2544 最短路(三种基本最短路算法)

http://acm.hdu.edu.cn/showproblem.php?pid=2544 题意:中文题求最短路。无负值。 思路:主要是用来熟悉三种基本最短路算法。先来整体教程。总体...
  • Flynn_curry
  • Flynn_curry
  • 2016年01月19日 16:24
  • 436

最短路&&优先队列优化->HDU2544

最短路&&优先队列优化->HDU2544Dijkstra算法思想:    (1)在任意时刻,我们都要得到从源点到所有顶点的估算距离,并维持一个顶点集合S,若顶点v在S中,则说明从源点到v的最短路径...
  • SelinaFelton
  • SelinaFelton
  • 2016年08月09日 00:43
  • 223

HDU-2544 最短路【最短路】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 最近复习了最短路径的算法,就写了4个版本的测试。正好是模板题,就果断A之。。。 Di...
  • niushuai666
  • niushuai666
  • 2012年02月25日 09:31
  • 2334

图论:HDU2544-最短路(最全、最经典的最短路入门及小结)

最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis...
  • yopilipala
  • yopilipala
  • 2017年07月18日 20:43
  • 309

ACM-最短路(SPFA,Dijkstra,Floyd)之最短路——hdu2544

ACM 最短路(SPFA,Dijkstra,Floyd) 最短路 hdu2544
  • lx417147512
  • lx417147512
  • 2014年05月27日 11:59
  • 3502

HDU2544 最短路

感觉bellman 和 djikstra处理的时候都要注意是否双向= = #include #include #include using namespace std; const int ...
  • MrSiz
  • MrSiz
  • 2016年03月26日 19:26
  • 163

HDU2544:最短路(最短路)

最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm...
  • junior19
  • junior19
  • 2017年02月17日 14:17
  • 66

hdu2544——最短路

原题: Problem Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在...
  • bingsanchun1
  • bingsanchun1
  • 2013年06月03日 21:49
  • 658

hdu2544(最短路)

/* 模版题,,dijkstra */ #include #include #define MAXN 100 #define inf 9999999 typedef int el...
  • zjwzcnjsy
  • zjwzcnjsy
  • 2011年12月06日 21:19
  • 269

HDU2544,最短路

最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis...
  • u011572579
  • u011572579
  • 2014年08月11日 19:49
  • 514
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDU2544最短路
举报原因:
原因补充:

(最多只允许输入30个字)