Submission #1289002

#TimeUsernameProblemLanguageResultExecution timeMemory
1289002mychecksedadPaths (RMI21_paths)C++20
56 / 100
1096 ms9932 KiB
/* Author : Mychecksdead */ #include<bits/stdc++.h> using namespace std; #define ll long long int #define MOD (1000000000+7) #define MOD1 (998244353) #define pb push_back #define all(x) x.begin(), x.end() #define en cout << '\n' #define ff first #define ss second #define pii pair<int,int> #define vi vector<int> const int N = 1e6+100, M = 1e5+10, K = 52, MX = 30; int n, k, leaf = 0, leaf_id[N], down[N]; ll num[N], dist[N]; vector<pair<int, ll>> g[N]; void pre(int v, int p){ leaf_id[v] = 0; if(g[v].size()==1){ leaf_id[v] = ++leaf; } for(auto [u, w]: g[v]) if(u != p) pre(u, v); } void dfs(int v, int p){ down[v] = v; dist[v] = 0; for(auto [u, w]: g[v]){ if(u != p){ dfs(u, v); if(dist[u] + w > dist[v]){ dist[v] = dist[u] + w; down[v] = down[u]; } } } // cerr << v << ' ' << down[v] << '\n'; for(auto [u, w]: g[v]){ if(u != p){ if(down[v] != down[u]){ num[leaf_id[down[u]]] = dist[u] + w; } } } } void solve(){ cin >> n >> k; if(n==1){ cout << 0; return; } for(int i = 0; i < n-1; ++i){ int u, v, w; cin >> u >> v >> w; g[u].pb({v, w}); g[v].pb({u, w}); } pre(1, 1); for(int i = 1; i <= n; ++i){ for(int j = 1; j <= leaf; ++j) num[j] = 0; dfs(i, i); ll sum = 0; num[leaf_id[down[i]]] = dist[i]; sort(num+1, num+1+leaf, greater<ll>()); for(int j = 1; j <= min(leaf, k); ++j){ sum += num[j]; } cout << sum << '\n'; } } int main(){ cin.tie(0); ios::sync_with_stdio(0); int tt = 1, aa; // freopen("in.txt", "r", stdin); // freopen("out.txt", "w", stdout); while(tt--){ solve(); } cerr<<"time taken : "<<(float)clock()/CLOCKS_PER_SEC<<" seconds\n"; 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...