Submission #525929

#TimeUsernameProblemLanguageResultExecution timeMemory
525929JosiaPaths (RMI21_paths)C++14
19 / 100
1083 ms31032 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); } void merge(multiset<int> &A, multiset<int> &B) { if (A.size() > B.size()) A.swap(B); for (int e: A) B.insert(e); } int stl(int v) { vector<multiset<int>> tree(n); // offset, options for (int i = 0; i<n; i++) { if (graph[i].size() == 1 && i!=v) tree[i].insert(0); } order.pop_back(); for (int i: order) { int newElem = *tree[i].rbegin() + parents[i].second; tree[i].erase(*tree[i].rbegin()); tree[i].insert(newElem); merge(tree[i], tree[parents[i].first]); } 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--; 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...