Submission #584894

#TimeUsernameProblemLanguageResultExecution timeMemory
584894BelguteiFriend (IOI14_friend)C++17
35 / 100
1 ms468 KiB
#include "friend.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define ff first #define ss second #define pb push_back #define mk make_pair const int N = 2005; vector<int> v; vector<int> edge[N]; int val[N]; bool visited[N]; int orson[N]; int oroogui[N]; void dfs(int k) { visited[k] = 1; for(auto x: edge[k]) { if(visited[x] == 1) continue; dfs(x); orson[k] += oroogui[x]; oroogui[k] += max(orson[x], oroogui[x]); } orson[k] += val[k]; } // Find out best sample int findSample(int n, int confidence[], int host[], int protocol[]){ int x=0, y =0 , z = 0; for(int i = 1; i < n; i ++) { if(protocol[i] == 0) x ++; if(protocol[i] == 1) y ++; if(protocol[i] == 2) z ++; } // subtask 2 my friends are your friends for(int i = 1; i < n; i ++) { // host[i] / protocol[i] edge[i].pb(host[i]); edge[host[i]].pb(i); } int sum = 0; for(int i = 0; i < n; i ++) sum += confidence[i]; int mx = 0; for(int i = 0; i < n; i ++) mx = max(mx, confidence[i]); if(y == n - 1) return sum; if(z == n - 1) return mx; for(int i = 0; i < n; i++) val[i] = confidence[i]; dfs(0); return max(orson[0], oroogui[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...