Submission #422211

#TimeUsernameProblemLanguageResultExecution timeMemory
422211dreezyFriend (IOI14_friend)C++17
11 / 100
1036 ms65540 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<set<int>> graph; vector<int> conf; int works(set<int> on){ int ans = 0; for(int a : on){ ans+= conf[a]; for(int b : on){ if(graph[a].find(b)!= graph[a].end()) return 0; } } return ans; } 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, set<int>()); for(int i =0; i<n; i++){ conf[i] = confidence[i]; } for(int i =1; i<n; i++){ if(protocol[i] == 0){ graph[host[i]].insert(i); graph[i].insert(host[i]); } else if(protocol[i] == 1){ for(int adj : graph[host[i]]){ graph[adj].insert(i); graph[i].insert(adj); } }else{ for(int adj : graph[host[i]]){ graph[adj].insert(i); graph[i].insert(adj); } graph[host[i]].insert(i); graph[i].insert(host[i]); } } int ans =0; for(int mask = 1; mask <(1<<n); mask++){ set<int> att; for(int i =0;i <n; i++) { if(mask & (1<<i)) att.insert(i); } ans = max(ans, works(att)); } return ans; } /*******************/
#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...