Submission #422207

#TimeUsernameProblemLanguageResultExecution timeMemory
422207dreezyFriend (IOI14_friend)C++17
19 / 100
2 ms460 KiB
#include <bits/stdc++.h> #include "friend.h" using namespace std; /*******************/ // Find out best sample #define pi pair<int,int> #define ll long long #define f first #define s second #define pb push_back vector<vector<int>> dp; vector<vector<int>> graph; vector<int> conf; ll calcdp(int n, int p, bool can){ if(dp[n][can] != -1) return dp[n][can]; int posans = 0; if(can){ for(int adj : graph[n]){ if(adj == p) continue; posans +=calcdp(adj, n, false); } dp[n][can] = posans + conf[n] ; } posans = 0; for(int adj : graph[n]){ if(adj == p) continue; posans+=calcdp(adj, n, true); } //cout << p<<"->"<<n<<": "<<posans<<", "<<dp[n][can]<<endl; dp[n][can] = max(posans, dp[n][can]); return dp[n][can]; } int findSample(int n,int confidence[],int host[],int protocol[]){ dp.clear(); graph.clear(); conf.clear(); conf.assign(n, 0); dp.assign(n, vector<int>(2, -1)); graph.assign(n, vector<int>()); for(int i =0; i<n; i++){ conf[i] = confidence[i]; } for(int i =1; i<n; i++){ graph[host[i]].pb(i); graph[i].pb(host[i]); } calcdp(0, -1, 1); return dp[0][1]; } /*******************/
#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...