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 |
能帮我看看哪里错了吗?#include "stdio.h" #include "string.h" #include "limits.h" struct ttun { int u, v, c, nlst; int lst[35]; } tun[500]; int n, m, src, tag; int getcost(int start, int cho) { if (tun[cho].nlst == 0 || start + tun[cho].c <= tun[cho].lst[0]) return start + tun[cho].c; for (int i = 1; i < tun[cho].nlst; i += 2) { int sta = start > tun[cho].lst[i] ? start : tun[cho].lst[i]; if (i == tun[cho].nlst - 1 || sta + tun[cho].c <= tun[cho].lst[i + 1]) { return sta + tun[cho].c; } } return INT_MAX; } int dijkstra() { int i, j, k; int D[50], used[50]; for (i = 0; i < n; i ++) { D[i] = INT_MAX; used[i] = 0; } D[src] = 0; for (i = 0; i < n; i ++) { int min = INT_MAX; for (j = 0; j < n; j ++) if (!used[j] && D[j] < min) { min = D[j]; k = j; } if (min == INT_MAX || k == tag) break; used[k] = 1; for (j = 0; j < m; j ++) { if (tun[j].u == k || tun[j].v == k) { int p = tun[j].u + tun[j].v - k; if (used[p]) continue; int cost = getcost(D[k], j); if (cost < D[p]) D[p] = cost; } } } return D[tag]; } int getnum(char *inf, int &p, int len) { int ans = 0; while (p < len && (inf[p] < '0' || inf[p] > '9')) p ++; while (p < len && inf[p] >= '0' && inf[p] <= '9') { ans = ans * 10 + int(inf[p++]) - 48; } return ans; } int main() { int i; char inf[1000]; // freopen("in.txt", "r", stdin); while (scanf("%d", &n), n > 0) { for (i = 0; i < n; i ++) memset(&tun[i], 0, sizeof(tun[i])); scanf("%d%d%d", &m, &src, &tag); src --; tag --; for (i = 0; i < m; i ++) { scanf("%d%d%d", &tun[i].u, &tun[i].v, &tun[i].c); tun[i].u --; tun[i].v --; gets(inf); int p = 0; int len = strlen(inf); while (p < len) { tun[i].lst[tun[i].nlst++] = getnum(inf, p, len); } } int ans = dijkstra(); if (ans == INT_MAX) printf("*\n"); else printf("%d\n", ans); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator