Submission #533504

#TimeUsernameProblemLanguageResultExecution timeMemory
533504N1NT3NDOParkovi (COCI22_parkovi)C++17
0 / 110
71 ms11028 KiB
#include <bits/stdc++.h> #define ll long long #define pb push_back //#include <ext/pb_ds/assoc_container.hpp> //#include <ext/pb_ds/tree_policy.hpp> #define sz(x) (int)x.size() #define fi first #define sd second #define all(x) x.begin(), x.end() //#pragma GCC target ("avx2") //#pragma GCC optimization ("O3") //#pragma GCC optimization ("unroll-loops") using namespace std; //using namespace __gnu_pbds; //typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; const int N = (int)2e5 + 500; vector< pair<int, int> > g[N]; int n, k, mx, mn_d; bool have[N]; void dfs(int v, int pr, int d, int cur) { if (have[v]) { // if (d < mn_d) // { // mx = cur; // mn_d = d; // } // else if (d == mn_d) mx = min(mx, cur); mx = min(mx, cur); return; } for(auto [u, w] : g[v]) { if (u == pr) continue; dfs(u, v, d + 1, cur + w); } } void group1() { vector<int> vec; int ans = 1e9; for(int mask = 0; mask < (1 << n); mask++) { if (__builtin_popcount(mask) != k) continue; for(int i = 1; i <= n; i++) have[i] = 0; for(int i = 0; i < n; i++) if (mask & (1 << i)) { have[i + 1] = 1; } int cur_ans = 0; for(int i = 1; i <= n; i++) { mx = 1e9; mn_d = 1e9; dfs(i, i, 0, 0); cur_ans = max(cur_ans, mx); } if (ans > cur_ans) { ans = cur_ans; vec.clear(); for(int i = 0; i < n; i++) if (mask & (1 << i)) vec.pb(i + 1); } } cout << ans << '\n'; for(auto u : vec) cout << u << ' '; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); //freopen("input.txt", "r", stdin); cin >> n >> k; for(int i = 1; i < n; i++) { int u, v, w; cin >> u >> v >> w; g[u].pb({v, w}); g[v].pb({u, w}); } if (n <= 20) group1(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...