Submission #764848

#TimeUsernameProblemLanguageResultExecution timeMemory
764848The_SamuraiParkovi (COCI22_parkovi)C++17
10 / 110
90 ms15300 KiB
#include "bits/stdc++.h" using namespace std; using ll = long long; int n, k; vector<bool> vis; vector<vector<pair<int, int>>> g; void solve() { cin >> n >> k; g.assign(n + 1, {}); for (int i = 1; i < n; i++) { int u, v, w; cin >> u >> v >> w; g[u].emplace_back(v, w); g[v].emplace_back(u, w); } if (n <= 20) { ll ans = 1e18; vector<int> built; for (int i = 0; i < (1 << n); i++) { if (__builtin_popcount(i) != k) { continue; } priority_queue<pair<ll, int>> pq; vector<int> now; for (int j = 0; j < n; j++) { if ((1 << j) & i) { pq.emplace(0, j + 1); now.emplace_back(j + 1); } } vis.assign(n + 1, false); ll close = 0; while (!pq.empty()) { auto [d1, u] = pq.top(); pq.pop(); if (vis[u]) { continue; } vis[u] = true; d1 = -d1; close = max(close, d1); for (auto [v, d2]: g[u]) { if (!vis[v]) { pq.emplace(-d1 - d2, v); } } } if (ans > close) { ans = close; built = now; } } cout << ans << '\n'; for (int x: built) { cout << x << ' '; } return; } } int main() { ios_base::sync_with_stdio(false); cout.tie(nullptr); cin.tie(nullptr); int queries = 1; #ifdef test_cases freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); // cin >> queries; #else // cin >> queries; #endif for (int test_case = 1; test_case <= queries; test_case++) { solve(); // cout << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...