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 |
附java的AC代码import java.util.Scanner; public class POJ_2387 { private static final int INF = 400000; private static int T, N; private static int[][] map; private static int[] dis; private static boolean[] vis; public static void main(String[] args) { Scanner in = new Scanner(System.in); T = in.nextInt(); N = in.nextInt(); dis = new int[N + 1]; vis = new boolean[N + 1]; map = new int[N + 1][N + 1]; for (int i = 1; i <= N; i++) { dis[i] = INF; for (int j = 1; j <= N; j++) { map[i][j] = map[j][i] = INF; } } while (T-- > 0) { int s = in.nextInt(); int e = in.nextInt(); int w = in.nextInt(); //如果有重边,选择最小的 if (map[s][e] > w) map[s][e] = map[e][s] = w; } dijkstra(1); System.out.println(dis[N]); in.close(); } private static void dijkstra(int u) { for (int i = 1; i <= N; i++) { dis[i] = map[u][i]; } dis[u] = 0; vis[u] = true; for (int t = 0; t < N; t++) { int min = INF; int k = 0; for (int i = 1; i <= N; i++) { if (!vis[i] && dis[i] < min) { min = dis[i]; k = i; } } vis[k] = true; for (int i = 1; i <= N; i++) { if (!vis[i] && dis[i] > dis[k] + map[k][i]) dis[i] = dis[k] + map[k][i]; } } } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator