Submission #222988

#TimeUsernameProblemLanguageResultExecution timeMemory
222988dolphingarlic시간이 돈 (balkan11_timeismoney)C++14
50 / 100
9 ms512 KiB
#include <bits/stdc++.h>
#define FOR(i, x, y) for (int i = x; i < y; i++)
typedef long long ll;
using namespace std;

struct Line {
    int u, v, t, c;

    bool operator<(Line B) { return t + c < B.t + B.c; }
} lines[10000];

int cmp[200];

int find(int A) {
    while (A != cmp[A]) cmp[A] = cmp[cmp[A]], A = cmp[A];
    return A;
}

void onion(int A, int B) { cmp[find(A)] = cmp[find(B)]; }

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int n, m;
    cin >> n >> m;
    FOR(i, 0, m) cin >> lines[i].u >> lines[i].v >> lines[i].t >> lines[i].c;
    sort(lines, lines + m);
    iota(cmp, cmp + n, 0);

    vector<Line> res;
    int t = 0, c = 0;
    FOR(i, 0, m) {
        if (find(lines[i].u) != find(lines[i].v)) {
            t += lines[i].t, c += lines[i].c;
            onion(lines[i].u, lines[i].v);
            res.push_back(lines[i]);
        }
    }

    cout << t << ' ' << c << '\n';
    for (Line i : res) cout << i.u << ' ' << i.v << '\n';
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...