Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
重边呀呀呀呀呀呀呀呀In Reply To:Dijkstra为什么WA啊?郁闷啊。。。 Posted by:e_e_e at 2008-09-27 21:31:19 > import java.io.*; > import java.util.*; > > public class Main { > public static void main(String[] args) throws Exception { > int t, n; > int[][] a; > > BufferedReader stdin = new BufferedReader(new InputStreamReader( > System.in)); > StringTokenizer sz = new StringTokenizer(stdin.readLine()); > t=Integer.parseInt(sz.nextToken()); > n=Integer.parseInt(sz.nextToken()); > > a=new int[n][n]; > for(int i=0;i<n;i++){ > Arrays.fill(a[i], Integer.MAX_VALUE); > } > for(int i=0;i<n;i++){ > a[i][i]=0; > } > > for(int i=0;i<t;i++){ > sz=new StringTokenizer(stdin.readLine()); > int from=Integer.parseInt(sz.nextToken())-1; > int to=Integer.parseInt(sz.nextToken())-1; > int value=Integer.parseInt(sz.nextToken()); > > a[from][to]=a[to][from]=value; > } > > Dijkstra dij=new Dijkstra(n,0); > dij.array=a; > dij.solve(); > dij.printLength(n-1); > } > } > > class Dijkstra { > int n, start; > int[] flag; > int[] cost; > int[] path; > int[][] array; > > public Dijkstra(int n, int start) { > this.n = n; > this.start = start; > > flag = new int[n]; > cost = new int[n]; > Arrays.fill(cost, Integer.MAX_VALUE); > path = new int[n]; > } > > public void solve() { > for (int i = 0; i < n; i++) { > if (array[start][i] != Integer.MAX_VALUE) { > cost[i] = array[start][i]; > path[i] = start; > } else > path[i] = -1; > } > > cost[start] = 0; > flag[start] = 1; > for (int i = 0; i < n; i++) { > int tmp = Integer.MAX_VALUE, u = 0; > for (int j = 0; j < n; j++) { > if (flag[j] == 0 && cost[j] < tmp) { > tmp = cost[j]; > u = j; > } > } > > flag[u] = 1; > for (int j = 0; j < n; j++) { > if (flag[j] == 0 && array[u][j] < Integer.MAX_VALUE > && cost[u] + array[u][j] < cost[j]) { > cost[j] = cost[u] + array[u][j]; > path[j] = u; > } > } > } > } > > public void printLength(int end) { > System.out.print(cost[end]); > } > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator