首页 > 代码库 > 【水】java试手—poj 2387

【水】java试手—poj 2387

拿水题练下java能力,题目链接:http://poj.org/problem?id=2387

技术分享
 
这个结果算是写炸了吧……真心感觉Java不好用(应该是我太菜了TAT)
 
 1 import java.math.*; 2 import java.io.*; 3 import java.util.*; 4  5 class vec{ 6     int t,w,next; 7     vec(){ 8         t=0;w=0;next=0; 9     }10 }11 12 class edge{13     static int maxn=1005;14     static int maxm=1000005;15     static int inf=1000000009;16     int []head=new int[maxn];17     int []d=new int[maxn];18     vec []E=new vec[maxm];19     int ne;20     edge(){21         ne=0;22         for(int i=0;i<maxn;i++){23             head[i]=-1;24             d[i]=inf;25         }26         for(int i=0;i<maxm;i++){27             E[i]=new vec();28         }29     }30     31     void add_edge(int s,int t,int w){32         ne++;33         E[ne].t=t;34         E[ne].w=w;35         E[ne].next=head[s];36         head[s]=ne;37     }38 }39 40 public class Main {41     public static void main(String[] args) {42         Scanner cin=new Scanner(System.in);43         int n,m;44         while(cin.hasNext()){45             m=cin.nextInt(); n=cin.nextInt();46             edge G=new edge();47             for(int i=0;i<m;i++){48                 int s,t,w;49                 s=cin.nextInt();t=cin.nextInt();w=cin.nextInt();50                 G.add_edge(s, t, w);51                 G.add_edge(t, s, w);52             }53             G.d[1]=0;54             Deque<Integer> q=new LinkedList<Integer>();55             q.add(1);56             while(!q.isEmpty()){57                 int now=q.pop();58                 for(int i=G.head[now];i!=-1;i=G.E[i].next){59                     int v=G.E[i].t;60                     if(G.d[v]>G.d[now]+G.E[i].w){61                         G.d[v]=G.d[now]+G.E[i].w;62                         q.add(v);63                     }64                 }65             }66             System.out.println(G.d[n]);67         }68     }69 70 }

 

【水】java试手—poj 2387