ZOJ 2504 Help John! 【最短路】 【Dijkstra】
2011-08-18 21:23
393 查看
//2632155 2011-08-18 21:18:49 Accepted 2504 C++ 30 908 ylwh@Unknown //2627388 2011-08-14 20:08:17 Wrong Answer 2504 C++ 30 4308 ylwh@Unknown //2627355 2011-08-14 19:48:41 Wrong Answer 2504 C++ 30 4308 ylwh@Unknown //2627276 2011-08-14 18:37:24 Wrong Answer 2504 C++ 30 4116 ylwh@Unknown //2627271 2011-08-14 18:34:20 Wrong Answer 2504 C++ 110 4116 ylwh@Unknown //2626370 2011-08-14 10:07:49 Wrong Answer 2504 C++ 0 1000 ylwh@Unknown //2626350 2011-08-14 09:55:10 Wrong Answer 2504 C++ 0 1000 ylwh@Unknown //2626345 2011-08-14 09:52:46 Wrong Answer 2504 C++ 10 1000 ylwh@Unknown //2626343 2011-08-14 09:51:42 Compilation Error 2504 C++ 0 0 ylwh@Unknown //2626286 2011-08-14 08:56:20 Wrong Answer 2504 C++ 0 1000 ylwh@Unknown //2626281 2011-08-14 08:38:35 Wrong Answer 2504 C++ 0 1000 ylwh@Unknown //2626276 2011-08-14 08:19:42 Wrong Answer 2504 C++ 0 11900 ylwh@Unknown //2626136 2011-08-13 21:30:32 Segmentation Fault 2504 C++ 0 0 ylwh@Unknown //2626135 2011-08-13 21:30:02 Segmentation Fault 2504 C++ 0 0 ylwh@Unknown //2626133 2011-08-13 21:29:34 Segmentation Fault 2504 C++ 0 0 ylwh@Unknown #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #include <algorithm> using namespace std; #define M 30001 #define N 1001 #define MAX 20000000 struct edge { int x, len; struct edge * next; }e[M*2+N]; int d , staue , tmd ; int main() { int t, tt, n, m, i, j, k, cnt; struct edge * next; scanf("%d", &t); for(tt=1; tt<=t; tt++) { if(scanf("%d%d", &n, &m) == EOF) break; cnt = n; for(i=1; i<=n; i++) { d[i] = MAX; e[i].next = NULL; staue[i] = 0; } int a, b, c; while(m--) { scanf("%d%d%d", &a, &b, &c); e[++cnt].x = a; e[ cnt].len = c; e[ cnt].next = e[b].next; e[b].next = e + cnt; e[++cnt].x = b; e[ cnt].len = c; e[ cnt].next = e[a].next; e[a].next = e + cnt; } int kstaue; int flag = 0; d[1] = 0; scanf("%d", &k); scanf("%d", &tmd[1]); for(i=2; i<=k; i++) { kstaue = 0; scanf("%d", &tmd[i]); next = e[ tmd[i-1] ].next; while(next != NULL) { if(next->x == tmd[i]) { kstaue = 1; d[ tmd[i] ] = d[ tmd[i-1] ] + next->len; break; } next = next->next; } if( !kstaue ) flag = 1; } if(flag || d == MAX || tmd[1] != 1 || tmd[k] != n) { printf("TEST %d N\n", tt); continue; } int time1 = d ; staue[1] = staue[ tmd[2] ] = 1; int now = tmd[2]; int mins; for(i=3; i<=n; i++) { next = e[now].next; while(next != NULL) { if( !staue[next->x] && d[ next->x ] > d[now] + next->len) d[ next->x ] = d[now] + next->len; next = next->next; } mins = MAX; for(j=1; j<=n; j++) if( !staue[j] && d[j] < mins) { now = j; mins = d[j]; } staue[now] = 1; } int time2 = d ; printf("TEST %d Y %d\n", tt, time1 - time2); } return 0; }
相关文章推荐
- zoj 2504 Help John!(Dijkstra~~)
- ZOJ 2504 Help John! (dijkstra)
- ZOJ2504 Help John!,Floyd算法会TLE,只能用Dijkstra算法了
- zoj 2504 help john
- ZOJ 2504 Help John!
- ZOJ 2750 Idiomatic Phrases Game 最短路(dijkstra)
- zoj 1952 Heavy Cargo 最短路 Dijkstra
- ZOJ 2526 FatMouse and JavaBean II 单源最短路 dijkstra
- ZOJ 1655 Transport Goods(dijkstra最短路)
- zoj 1082 Stockbroker Grapevine 最短路 Dijkstra
- ZOJ 1655 Transport Goods 【最短路】【Dijkstra】
- 最短路:带限制的最短路,邻接表建图,dijkstra ZOJ 3946+HDU 2680 (简单点的)
- hdu 3790 最短路径问题 最短路Dijkstra
- [算法] poj 2387 单源最短路 Dijkstra
- 最短路模板(Dijkstra & Dijkstra算法+堆优化 & bellman_ford & 单源最短路SPFA)
- hdu2544 Dijkstra最短路
- UVa 10806 Dijkstra, Dijkstra (无向图+最小费用最大流+最短路:)
- HDU-1690 Bus System(最短路[Dijkstra])
- 第一周---最短路(Dijkstra、SPFA)
- POJ 3268 Silver Cow Party(最短路dijkstra)