View Code of Problem 14

#include<stdio.h>

int main(){
    int n, t, a, b, value, w, e, c, d, length, flag, i = 0, j = 0, k, foundFlag, map[2000][4] = {{0}};
    while(scanf("%d%d", &n, &t) && (n || t) && ++i){
        while(t--){
            scanf("%d%d%d", &a, &b, &value);
            foundFlag = 0;
            for(k = 0; k < j; k++){
                if(map[k][0] == a && map[k][1] == b){
                    (map[k][2] > value) && (map[k][2] = value);
                    foundFlag = 1;
                    break;
                }
            }
            if(!foundFlag){
                    map[j][0] = a;
                    map[j][1] = b;
                    map[j++][2] = value;
                }
        }
        scanf("%d%d", &w, &e);
        length = 0;
        flag = 0;
        while(w--){
            scanf("%d%d", &c, &d);
            if(flag)
                continue;
            for(k = 0; k < j; k++){
                if(((map[k][0] == c && map[k][1] == d)|| 
                    (map[k][0] == d && map[k][1] == c))&& 
                    !map[k][3]){
                    map[k][3] = 1;
                    length += map[k][2];
                    break;
                }
            }
            if(d == e)
                flag = 1;
        }
        printf("Case #%d: %d\n", i, length);
        for(k = 0; k < j; k++){
            map[k][0] = 0;
            map[k][1] = 0;
            map[k][3] = 0;
        }
        j = 0;
    }
    return 0;
}

Double click to view unformatted code.


Back to problem 14