View Code of Problem 14

#include <iostream>
#include "vector"

using namespace std;

/**
 * kkmd66 四刷
 * @return
 */

int main() {

    int n, t, count = 0;
    while (cin >> n >> t && n != 0 && t != 0) {

        //计次
        count++;

        //存储图,已剔除重复
        vector<vector<int>> map(n - 1);
        for (int i = 0; i < n - 1; ++i) {
            int a, b, value;
            cin >> a >> b >> value;
            if (i == 0) {
                map[i].push_back(a);
                map[i].push_back(b);
                map[i].push_back(value);
            } else {
                if (a == map[i - 1][0] && b == map[i - 1][1]) {
                    if (value < map[i - 1][2]) {
                        map[i - 1][2] = value;
                    }
                    i--;
                } else {
                    map[i].push_back(a);
                    map[i].push_back(b);
                    map[i].push_back(value);
                }
            }
        }

        //存储路线
        int w, e;
        cin >> w >> e;
        vector<vector<int>> route(w);
        for (int i = 0; i < w; ++i) {
            int a, b;
            cin >> a >> b;
            route[i].push_back(a);
            route[i].push_back(b);
        }

        //剔除重复路线
        for (int i = 0; i < route.size() - 1; ++i) {
            for (int j = i + 1; j < route.size(); ++j) {
                if ((route[j][0] == route[i][0] && route[j][1] == route[i][1]) ||
                    (route[j][0] == route[i][1] && route[j][1] == route[i][0])) {
                    route[j][0] = -1;
                    route[j][1] = -1;
                }
            }
        }

        //计算路径
        int sum = 0;
        for (int i = 0; i < route.size(); ++i) {
            if (route[i][0] != -1) {
                for (int j = 0; j < map.size(); ++j) {
                    if (route[i][0] ==map[j][0]  && route[i][1] ==map[j][1] ) {
                        sum += map[j][2];
                        break;
                    }
                }
                if (route[i][1] == e)
                    break;
            }
        }

        //输出
        cout <<"Case #"<<count<<": "<< sum << endl;
    }
    
    return 0;
}

Double click to view unformatted code.


Back to problem 14