#include<stdio.h> #include <string.h> //shijian jiewei int main() { int n, t, w, e, i, j, pos, sum, poss = 0, flagg; int dis[5000][3], road0, road1, flag[2000];//flag -1 过长 0 未走 1 已走 scanf("%d %d", &n, &t); while ( (n!=0) && (t!=0) ) { memset(flag, 0, sizeof(int)*t); for (i=0; i<t; i++) scanf("%d %d %d", &dis[i][0], &dis[i][1], &dis[i][2]); //未清理较长路 scanf("%d %d", &w, &e); sum = 0; flagg = 0; for (i=0; i<w; i++) { scanf("%d %d", &road0, &road1); if (road0 == e)/// flagg = 1; if (flagg) continue; pos = -1; for (j=0; j<t; j++) { if ( ( ((road0==dis[j][0]) && (road1==dis[j][1]))|| ((road1==dis[j][0]) && (road0==dis[j][1])) )&& ( flag[j]!=(-1) ) ) { if ( pos != (-1) ) { if (dis[j][2] <= dis[pos][2]) { flag[pos] = -1; pos = j; } else flag[j] = -1; } else //if (pos == 0) pos = j; } } if (flag[pos] == 0) { flag[pos] = 1; sum += dis[pos][2]; } } poss++; printf("Case #%d: %d\n", poss, sum); scanf("%d %d", &n, &t); } return (0); } |
Double click to view unformatted code.