제출 #1333606

#제출 시각아이디문제언어결과실행 시간메모리
1333606zhehanWind Turbines (EGOI25_windturbines)C++20
0 / 100
4091 ms3540 KiB
#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> ii;
typedef pair<int, ii> iii;

vector<int> ufds;

int fi(int x) {
  if (ufds[x] == -1) {
    return x;
  }
  return ufds[x] = fi(ufds[x]);
}

void un(int a, int b) { ufds[fi(a)] = fi(b); }

int main() {
  int n, m, q, u, v, c;
  cin >> n >> m >> q;
  priority_queue<iii, vector<iii>, greater<iii>> base;
  for (int i = 0; i < m; ++i) {
    cin >> u >> v >> c;
    base.push(iii(c, ii(u, v)));
  }
  for (int i = 0; i < q; ++i) {
    int cost = 0;
    cin >> u >> v;
    ufds = vector<int>(n + 5, -1);
    for (int i = u + 1; i <= v; ++i) {
      un(i, u);
    }
    auto t = base;
    int cnt = n - (v - u + 1);
    while (!t.empty() && cnt > 0) {
      int w = t.top().first;
      int u = t.top().second.first;
      int v = t.top().second.second;
      if (fi(u) != fi(v)) {
        un(u, v);
        cost += w;
        --cnt;
      }
      t.pop();
    }
    cout << cost << '\n';
  }
  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...