hdu 2066 一个人的旅行
2013-01-26 13:40
411 查看
http://acm.hdu.edu.cn/showproblem.php?pid=2066
题目 | 算法 | 备注 |
给出城市间花费的时间,多个起点,多个终点,求最短时间 | 弗洛伊德 | |
import java.util.Scanner; public class Main { static int a[][]=new int[1001][1001]; public static void main(String[] args) { int m,i,j,k,t,s,d,p,q,c; Scanner oo=new Scanner(System.in); while(oo.hasNext()){ t=oo.nextInt(); s=oo.nextInt(); d=oo.nextInt(); for(i=1;i<=1000;i++){ for(j=1;j<=1000;j++){ a[i][j]=100000000; } } m=0; for(i=0;i<t;i++){ p=oo.nextInt(); q=oo.nextInt(); if(p>m){m=p;} if(q>m){m=q;} c=oo.nextInt(); if(c<a[p][q]){ a[p][q]=c; a[q][p]=c; } } int start[]=new int[s]; int end[]=new int[d]; for(i=0;i<s;i++){ start[i]=oo.nextInt(); } for(i=0;i<d;i++){ end[i]=oo.nextInt(); } for(k=1;k<=m;k++){ for(i=1;i<=m;i++){ if(a[i][k]!=100000000){ for(j=1;j<=m;j++){ if(a[i][k]+a[k][j]<a[i][j]){ a[i][j]=a[i][k]+a[k][j]; } } } } } int min=100000000; for(i=0;i<s;i++){ for(j=0;j<d;j++){ if(a[start[i]][end[j]]<min){ min=a[start[i]][end[j]]; } } } System.out.println(min); } } }
相关文章推荐
- hdu 2066 一个人的旅行(最短路+SPFA)
- HDU - 2066- 一个人的旅行【最短路】
- hdu 2066 一个人的旅行
- HDU 2066 一个人的旅行 (Dijkstra算法)
- HDU 2066 一个人的旅行(SPFA +Floyd-Warshall算法)
- HDU-#2066 一个人的旅行(Floyd & Dijkstra)
- hdu 2066 一个人的旅行(dijkstra特殊)
- hdu 2066 一个人的旅行
- HDU2066 一个人的旅行【Dijkstra】
- HDU 2066 一个人的旅行(dijkstra)
- hdu 2066 一个人的旅行 Dijkstra
- HDU 2066 一个人的旅行
- HDU 2066 一个人的旅行(最短路)
- HDU 2066 一个人的旅行
- HDU - 2066 一个人的旅行 —— dijkstra
- HDU-2066 一个人的旅行
- hdu 2066 一个人的旅行(最短路)
- hdu 2066 一个人的旅行(单源最短路dijkstra)and hdu 2544
- HDU 2066 一个人的旅行
- HDU:2066 一个人的旅行(dijkstra算法求最短路径)