Submission #238750

#TimeUsernameProblemLanguageResultExecution timeMemory
238750MohamedAhmed04Dostavljač (COCI18_dostavljac)C++14
140 / 140
120 ms2432 KiB
#include <bits/stdc++.h> using namespace std ; const int MAX = 500 + 10 ; int arr[MAX] , dp[MAX][MAX][2] , tmp[MAX][2] ; int n , m ; vector< vector<int> >adj(MAX) ; void dfs(int node , int par) { dp[node][0][0] = dp[node][0][1] = 0 ; dp[node][1][0] = dp[node][1][1] = arr[node] ; for(auto &child : adj[node]) { if(child == par) continue ; dfs(child , node) ; for(int i = 0 ; i <= m ; ++i) { if(!dp[node][i][0] && i) break ; for(int j = 0 ; i + j + 1 <= m ; ++j) { if(!dp[child][j][0] && j) break ; int k = i+j+1 ; tmp[k+1][0] = max(tmp[k+1][0] , dp[node][i][0] + dp[child][j][0]) ; tmp[k][1] = max(tmp[k][1] , dp[node][i][0] + max(dp[child][j][0] , dp[child][j][1])) ; tmp[k+1][1] = max(tmp[k+1][1] , dp[node][i][1] + dp[child][j][0]) ; } } int now0 = 0 , now1 = 0 ; for(int i = 0 ; i <= m ; ++i) { now0 = max(now0 , max(dp[node][i][0] , tmp[i][0])) ; now1 = max(now1 , max(dp[node][i][1] , tmp[i][1])) ; dp[node][i][0] = now0 ; dp[node][i][1] = now1 ; tmp[i][0] = tmp[i][1] = 0 ; } } } int main() { ios_base::sync_with_stdio(0) ; cin.tie(0) ; cin>>n>>m ; for(int i = 1 ; i <= n ; ++i) cin>>arr[i] ; for(int i = 0 ; i < n-1 ; ++i) { int x , y ; cin>>x>>y ; adj[x].push_back(y) ; adj[y].push_back(x) ; } dfs(1 , -1) ; return cout<<max(dp[1][m][0] , dp[1][m][1])<<"\n" , 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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...