Submission #716540

#TimeUsernameProblemLanguageResultExecution timeMemory
716540StickfishPaths (RMI21_paths)C++17
Compilation error
0 ms0 KiB
#include <iostream> #include <vector> #include <algorithm> using namespace std; using ll = long long; //struct node { //node* l = nullptr; //node* r = nullptr; //ll val = 0; //ll sm = 0; //}; //node* copy(node* nd) { //node* v = new node(); //v->l = nd->l; //v->r = nd->r; //v->val = nd->val; //return v; //} //node* merge(node* l, node* r) { //if (!l) //return r; //if (!r) //return l; //} const int MAXN = 1e5 + 123; vector<pair<int, int>> edg[MAXN]; ll cost[MAXN * 3]; pair<int, int> edges[MAXN * 3]; vector<ll> dp[MAXN * 3]; void get_dp(int e, int k) { if (dp[e].size()) return; auto [rt, v] = edges[e]; if (k == 1) dp[e] = {0}; for (auto [u, ne] : edg[v]) { if (u == rt) continue; get_dp(ne, k); if (k == 1) { dp[e][0] = max(dp[e][0], dp[ne][0]); continue; } vector<ll> ndp(dp[e].size() + dp[ne].size()); merge(dp[e].rbegin(), dp[e].rend(), dp[ne].rbegin(), dp[ne].rend(), ndp.rbegin()); ndp.resize(min(int(ndp.size()), k)); dp[e] = ndp; } if (dp[e].empty()) { dp[e] = {cost[e]}; } else { dp[e][0] += cost[e]; } } signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int n, k; cin >> n >> k; assert(k == 1); for (int i = 0; i + 1 < n; ++i) { int u, v, c; cin >> u >> v >> c; --u, --v; edg[u].push_back({v, i * 2}); edg[v].push_back({u, i * 2 + 1}); edges[i * 2] = {u, v}; edges[i * 2 + 1] = {v, u}; cost[i * 2] = cost[i * 2 + 1] = c; } for (int e = 2 * n; e < 3 * n; ++e) { edges[e] = {n, e - 2 * n}; get_dp(e, k); ll ans = 0; for (auto x : dp[e]) ans += x; cout << ans << '\n'; } }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:68:5: error: 'assert' was not declared in this scope
   68 |     assert(k == 1);
      |     ^~~~~~
Main.cpp:4:1: note: 'assert' is defined in header '<cassert>'; did you forget to '#include <cassert>'?
    3 | #include <algorithm>
  +++ |+#include <cassert>
    4 | using namespace std;