HDU2544最短路
2015-07-10 14:36
169 查看
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 ) ; } } 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()); } }
相关文章推荐
- 了解搜索引擎技术
- Nginx报错nginx: [emerg] unknown log format "main"
- Python 中 and 和 or 的有趣现象
- Nine-Patch使用方法
- C++学习笔记之---内存管理
- Java - List遍历、判断、删除元素时的陷阱
- java File类与FilenameFilter类的学习
- 离开熟悉的地方
- 什么是兼容性测试?如何做好兼容性测试?
- 操作系统时间片轮转法进程CPU调度
- sizeof、strlen
- 【程序员联盟】官网上线啦!coderunity.com
- Js 小技巧
- 汇编语言:第六章 编写多个段的程序
- mysql查找表名
- ORACLE创建定时任务
- skip_grant_tables与半同步的冲突
- Android的ListView中判断其内容已滚动到最顶部或者最底部
- 谁也不该供着谁
- 如何优化UITableView的性能