제출 #1344770

#제출 시각아이디문제언어결과실행 시간메모리
1344770ramzialoulouFireworks (APIO16_fireworks)C++20
0 / 100
0 ms344 KiB
#include <bits/stdc++.h>
 
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int n, m;
  cin >> n >> m;
  vector<vector<pair<int, int>>> g(n + m);
  for (int i = 1; i < n + m; i++) {
    int p, c;
    cin >> p >> c;
    --p;
    g[p].emplace_back(i, c);
    g[i].emplace_back(p, c);
  }
  vector<long long> d(n, -1);
  d[0] = 1;
  vector<int> que(1);
  for (int it = 0; it < int(que.size()); it++) {
    int u = que[it];
    for (auto [v, w] : g[u]) {
      if (d[v] == -1) {
        d[v] = d[u] + w;
        que.push_back(v);
      }
    }
  }
  long long ans = LLONG_MAX;
  for (int x : d) {
    long long res = 0;
    vector<pair<int, long long>> que(1, {0, 0});
    vector<int> vis(n);
    vis[0] = 1;
    for (int b = 0; b < int(que.size()); b++) {
      auto [u, dist] = que[b];
      for (auto [v, w] : g[u]) {
        if (!vis[v]) {
          long long D = dist + d[v];
          res += abs(D - x);
          que.emplace_back(v, dist + D - x);
          vis[v] = 1;
        }
      }
    }
    ans = min(ans, res);
  }
  cout << ans << '\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...