제출 #162054

#제출 시각아이디문제언어결과실행 시간메모리
162054oolimryFriend (IOI14_friend)C++14
46 / 100
37 ms2724 KiB
#include "friend.h" #include <bits/stdc++.h> using namespace std; int findSample(int n, int confidence[], int host[], int protocol[]) { bool two = true; bool three = true; bool four = true; for(int i = 1;i < n;i++){ if(protocol[i] != 0) four = false; if(protocol[i] != 2) three = false; if(protocol[i] != 1) two = false; } if(four){ vector<int> child[n]; for(int i = 1;i < n;i++){ child[host[i]].push_back(i); } typedef pair<int,int> ii; ii dp[n]; fill(dp,dp+n,ii(0,0)); for(int u = n-1;u >= 0;u--){ dp[u] = ii(confidence[u],0); for(int v : child[u]){ dp[u].first += dp[v].second; dp[u].second += dp[v].first; } dp[u].first = max(dp[u].second,dp[u].first); } return dp[0].first; } else if(three){ long long s = 0; for(int i = 0;i < n;i++){ s = max((long long)confidence[i],s); } return s; } else if(two){ long long s = 0; for(int i = 0;i < n;i++){ s += confidence[i]; } return s; } else if(n <= 10){ vector<int> adj[n]; for(int u = 1;u < n;u++){ if(protocol[u] == 1 || protocol[u] == 2){ //cout << u << "\n"; for(int v : adj[host[u]]){ //cout << v << " "; adj[u].push_back(v); adj[v].push_back(u); } //cout << "\n"; } if(protocol[u] == 0 || protocol[u] == 2){ adj[u].push_back(host[u]); adj[host[u]].push_back(u); } } long long ovans = 0; for(int mask = 0;mask < (1<<n);mask++){ bool can = true; for(int u = 0;u < n;u++){ for(int v : adj[u]){ if((mask & (1<<u)) != 0 && (mask & (1<<v)) != 0){ can = false; break; } } } //cout << mask << " "; if(can){ long long ans = 0; for(int i = 0;i < n;i++){ if((mask & (1<<i)) != 0) ans += confidence[i]; } ovans = max(ovans,ans); } } return ovans; } return 4; }
#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...