#include <stdio.h> #define N 1000 int main() { int n, t, a[N], b[N], value[N], w, e, c[N], d[N]; int k = 1, i; //k用来记录Case; while(scanf("%d %d", &n, &t) != EOF && n != 0 && t != 0) { int sum = 0; //sum用来记录总路程; for(i = 0; i < t; i++) scanf("%d %d %d", &a[i], &b[i], &value[i]); for(i = 0; i < t; i++) { for(int j = i + 1; j < t; j++) { if(a[i] == a[j] && b[i] == b[j] && value[i] != 0 && value[j] != 0) { if(value[i] > value[j]) value[i] = 0; else value[j] = 0; } } } scanf("%d %d", &w, &e); for(i = 0; i < w; i++) scanf("%d %d", &c[i], &d[i]); for(i = 0; i < w; i++) { for(int j = i + 1; j < w; j++) { if((c[i] == c[j] && d[i] == d[j]) || (c[i] == d[j] && d[i] == c[j])) { c[j] = 0; d[j] = 0; } } } for(i = 0; i < w; i++) { for(int j = 0; j < t; j++) { if((c[i] == a[j] && d[i] == b[j]) || (c[i] == b[j] && d[i] == a[j])) { if(c[i] <= e && d[i] <= e) { sum += value[j]; } } if((d[i] == e || c[i] == e) && ((c[i] == a[j] && d[i] == b[j]) || (c[i] == b[j] && d[i] == a[j]))) break; } } printf("Case #%d: %d\n", k++, sum); } return 0; } |
Double click to view unformatted code.