Submission #598150

#TimeUsernameProblemLanguageResultExecution timeMemory
598150OttoTheDinoChase (CEOI17_chase)C++17
30 / 100
571 ms174288 KiB
#include <bits/stdc++.h> using namespace std; #define rep(i,s,e) for (ll i = s; i <= e; ++i) #define rrep(i,s,e) for (ll i = s; i >= e; --i) #define pb push_back #define pf push_front #define fi first #define se second #define all(a) a.begin(), a.end() #define len(a) (ll)a.size() typedef long long ll; typedef pair<ll, ll> ii; typedef pair<ll, ll> pll; typedef vector<ii> vii; typedef vector<ll> vi; typedef vector<double> vd; typedef vector<string> vs; typedef vector<ll> vll; const ll mx = 1e5, mxv = 100; ll p[mx+1], s[mx+1]; vi adj[mx+1]; ll dp2[mx+1][mxv+1], done[mx+1][mxv+1]; ll dfs2 (int u, int par, int cnt) { if (cnt==0) return 0; if (done[u][cnt]) return dp2[u][cnt]; dp2[u][cnt] = s[u]-p[par]; for (int v : adj[u]) { if (v==par) continue; dp2[u][cnt] = max(dp2[u][cnt], max(s[u]-p[par]+dfs2(v,u,cnt-1), dfs2(v,u,cnt))); } done[u][cnt] = 1; return dp2[u][cnt]; } int main() { ios::sync_with_stdio(0); cin.tie(0); ll n, l; cin >> n >> l; rep (i,1,n) cin >> p[i]; rep (i,1,n-1) { ll u, v; cin >> u >> v; adj[u].pb(v); adj[v].pb(u); } rep (i,1,n) for (int v : adj[i]) s[i] += p[v]; cout << dfs2 (1, 0, l) << "\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...