제출 #1032626

#제출 시각아이디문제언어결과실행 시간메모리
1032626stdfloat다리 (APIO19_bridges)C++17
14 / 100
59 ms8568 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}, {--s, 0}});
    }

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

    sort(v.begin(), v.end());
    reverse(v.begin(), v.end());

    vector<int> ans(q);
    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.ss.ff)];
    }

    for (auto i : ans) 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...