Submission #525674

#TimeUsernameProblemLanguageResultExecution timeMemory
525674JosiaPaths (RMI21_paths)C++17
19 / 100
1068 ms120164 KiB
#include <bits/stdc++.h> using namespace std; #define int int64_t vector<pair<int, int>> parents; vector<vector<pair<int, int>>> graph; vector<int> order; int n, k; void generateParents(int v, int p, int weight) { if (parents[v].first != -1) return; parents[v].first = p; parents[v].second = weight; for (auto u: graph[v]) { if (parents[u.first].first != -1) continue; generateParents(u.first, v, u.second); } order.push_back(v); } int stl(int v) { vector<multiset<int>> tree(n, {0}); // offset, options // vector<int> pointers; // for (int i = 0; i<n; i++) pointers.push_back(i); order.pop_back(); for (int i: order) { int newElem = *prev(tree[i].end()) + parents[i].second; tree[i].erase(*prev(tree[i].end())); tree[i].insert(newElem); auto it = tree[i].begin(); while (it != tree[i].end()) { tree[parents[i].first].insert(*it); it++; } } // cerr << "root element: "; // for (int i: tree[v]) { // cerr << i << " "; // } cerr << "\n"; int res = 0; auto it = tree[v].end(); for (int i = 0; i<k; i++) { it = prev(it); res += *it; } return res; } void solve() { cin >> n >> k; graph.resize(n); for (int i = 0; i<n-1; i++) { int a, b, c; cin >> a >> b >> c; a--; b--; graph[a].push_back({b, c}); graph[b].push_back({a, c}); } for (int i = 0; i<n; i++) { // cerr << i << " ----------------------\n"; parents.clear(); parents.assign(n, {-1, 0}); order.clear(); generateParents(i, -2, 0); // cerr << "order: "; // for (auto i: order) { // cerr << i << " "; // } cerr << "\n"; // cerr << "parents: "; // for (auto i: parents) { // cerr << i.first << " "; // } cerr << "\n"; assert(order.back() == i); int res = stl(i); cout << res << "\n"; // cerr << "result: " << res << "\n"; } } signed main() { cin.tie(0); ios_base::sync_with_stdio(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...