Submission #955733

#TimeUsernameProblemLanguageResultExecution timeMemory
955733caterpillowRoad Closures (APIO21_roads)C++17
0 / 100
2055 ms22364 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using pl = pair<ll, ll>; #define vt vector #define f first #define s second #define all(x) x.begin(), x.end() #define pb push_back #define FOR(i, a, b) for (int i = (a); i < (b); i++) #define ROF(i, a, b) for (int i = (b) - 1; i >= (a); i--) #define F0R(i, b) FOR (i, 0, b) #define endl '\n' #define debug(x) do{auto _x = x; cerr << #x << " = " << _x << endl;} while(0) const ll INF = 1e12; int n; vt<vt<pl>> adj; vt<ll> ans; pl dfs(int u, int k, int par = -1) { // {take parent edge, dont take parent edge} vt<ll> diff; ll take_cost = 0; for (auto [v, w] : adj[u]) { if (v == par) continue; auto [take, dont_take] = dfs(v, k, u); take_cost += dont_take; diff.pb(take - dont_take + w); } ll dont_take_cost = take_cost; ll req = adj[u].size() - k; sort(all(diff)); F0R (i, req - 1) { take_cost += diff[i]; dont_take_cost += diff[i]; } if (req > 0) { if (diff.size() <= req - 1) { dont_take_cost += INF; } else { dont_take_cost += diff[req - 1]; } } return {take_cost, dont_take_cost}; } vt<ll> minimum_closure_costs(int _n, vt<int> u, vt<int> v, vt<int> w) { n = _n; adj.resize(n); F0R (i, n - 1) { adj[u[i]].pb({v[i], w[i]}); adj[v[i]].pb({u[i], w[i]}); } ans.resize(n); ROF (k, 0, n) { ans[k] = dfs(0, k).s; } return ans; }

Compilation message (stderr)

roads.cpp: In function 'pl dfs(int, int, int)':
roads.cpp:45:25: warning: comparison of integer expressions of different signedness: 'std::vector<long long int>::size_type' {aka 'long unsigned int'} and 'll' {aka 'long long int'} [-Wsign-compare]
   45 |         if (diff.size() <= req - 1) {
      |             ~~~~~~~~~~~~^~~~~~~~~~
#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...