Submission #1032619

#TimeUsernameProblemLanguageResultExecution timeMemory
1032619stdfloatBridges (APIO19_bridges)C++17
0 / 100
42 ms11712 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;

#define ff  first
#define ss  second
#define pii pair<int, int>

vector<int> p, sz;

int fnd(int x) {
    return p[x] = (x == p[x] ? x : fnd(p[x]));
}

void uni(int x, int y) {
    x = fnd(x); y = fnd(y);

    if (x == y) return;

    p[x] = y;
    sz[y] += sz[x];
}

int main() {
    ios::sync_with_stdio(false); cin.tie(nullptr);

    int n, m;
    cin >> n >> m;

    vector<pair<pii, pii>> v;
    while (m--) {
        int x, y, d;
        cin >> x >> y >> d;

        v.push_back({{d, INT_MAX}, {--x, --y}});
    }

    int q;
    cin >> q;
    for (int i = 0; i < q; i++) {
        int t, s, w;
        cin >> t >> s >> w;

        v.push_back({{w, i}, {0, 0}});
    }

    p.assign(n, 0);
    sz.assign(n, 1);
    iota(p.begin(), p.end(), 0);    

    sort(v.rbegin(), v.rbegin());

    vector<int> ans(n);
    for (auto i : v) {
        if (i.ff.ss == INT_MAX) uni(i.ss.ff, i.ss.ss);
        else ans[i.ff.ss] = sz[fnd(i.ff.ff)];
    }

    for (auto i : ans) if (i) cout << i << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...