View Code of Problem 14

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <limits.h>

struct node{
    int a, b, value;
}f[2005];

int main()
{
    int n, t;
    int i = 1;
    while (scanf("%d%d", &n, &t) != EOF) {
        if (n == 0 && t == 0) {
            break;
        }
        for(int i = 0; i < n; i++)
            f[i].value = INT_MAX;
        
        printf("Case #%d: ", i++);
        int index = 0;
        while (t--) {
            int a1, b1, value;
            scanf("%d%d%d", &a1, &b1, &value);
            int i;
            for(i = 0; i < index; i++)
            {
                if ((a1 == f[i].a && b1 == f[i].b) ||
                    (a1 == f[i].b && b1 == f[i].a)) {
                    if (f[i].value > value) {
                        f[i].value = value;
                        break;
                    }
                }
            }
            
            if (i == index) {
                f[index].a = a1;
                f[index].b = b1;
                f[index++].value = value;
            }
            
        }
        
        int w, e;
        scanf("%d%d", &w, &e);
        int isFinish = 0, count = 0;
        while(w--)
        {
            int a1, b1;
            scanf("%d%d", &a1, &b1);
            if (isFinish) {
                continue;
            }
            if (b1 == e) {
                isFinish = 1;
            }
            for (int i = 0; i < index; i++) {
                if ((a1 == f[i].a && b1 == f[i].b) ||
                    (a1 == f[i].b && b1 == f[i].a)) {
                    count += f[i].value;
                    f[i].value = 0;
                    break;
                }
            }
        }
        printf("%d\n", count);
    }
}

Double click to view unformatted code.


Back to problem 14