Submission #285589

#TimeUsernameProblemLanguageResultExecution timeMemory
285589emanIaicepsaFriend (IOI14_friend)C++14
11 / 100
1085 ms4728 KiB
#include "friend.h" #include<bits/stdc++.h> #define pb emplace_back #define vi vector<int> using namespace std; // Find out best sample /* 6 13 3 6 20 10 15 0 0 0 1 1 2 2 1 0 0 */ bool f[1005][1005]; void addedge(int x,int h, int ope){ if(ope == 0) f[x][h] = f[h][x] = 1; else if(ope == 1){ for(int i=0;i<x;i++){ if(f[h][i]) f[x][i] = f[i][x] = 1; } } else{ for(int i=0;i<x;i++){ if(i == h || f[h][i]) f[i][x] = f[x][i] = 1; } } } bool ok(vi &v){ /* for(auto i:v) cout<<i<<" "; cout<<'\n'; */ int n = v.size(); for(int i=0;i<n;i++) for(int j=i+1;j<n;j++) if(f[v[i]][v[j]]) return 0; return 1; } int findSample(int n,int conf[],int host[],int ope[]){ for(int i=1;i<n;i++){ addedge(i, host[i], ope[i]); } /* for(int i=0;i<n;i++){ */ /* for(int j=0;j<n;j++){ */ /* cout<<f[i][j]<<" \n"[j==n-1]; */ /* } */ /* } */ int all = 1<<n, ans = 0; for(int i=1;i<all;i++){ vector<int> v; for(int j=0;j<n;j++){ if(i>>j&1) v.pb(j); } if(ok(v)){ int ta = 0; for(auto &x:v) ta += conf[x]; ans = max(ans, ta); } } 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...