제출 #1334056

#제출 시각아이디문제언어결과실행 시간메모리
1334056SpyrosAlivWind Turbines (EGOI25_windturbines)C++20
0 / 100
26 ms3604 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long

const int MN = 50;

int n, m, q, ans;
vector<tuple<int, int, int>> edges;
int par[MN], sz[MN];
bool ok[MN];

int find(int u) {
    if (par[u] == u) return u;
    return par[u] = find(par[u]);
}

void merge(int u, int v) {
    u = find(u);
    v = find(v);
    if (u == v) return;
    if (sz[u] > sz[v]) swap(u, v);
    par[u] = v;
    sz[v] += sz[u];
    ok[v] |= ok[u];
}

void solve() {
    cin >> n >> m >> q;
    for (int i = 1; i <= m; i++) {
        int u, v, c; cin >> u >> v >> c;
        u++;
        v++;
        edges.push_back({c, u, v});
    }
    sort(edges.begin(), edges.end());
    while (q--) {
        ans = 0;
        int l, r; cin >> l >> r;
        l++;
        r++;
        for (int i = 1; i <= n; i++) {
            ok[i] = false;
            par[i] = i;
            sz[i] = 1;
            if (i >= l && i <= r) ok[i] = true;
        }
        for (auto [c, u, v]: edges) {
            u = find(u);
            v = find(v);
            if (u == v || (ok[u] && ok[v])) continue;
            ans += c;
            merge(u, v);
        }
        cout << ans << "\n";
    }
}

signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    solve();
    return 0;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...