Submission #1304263

#TimeUsernameProblemLanguageResultExecution timeMemory
1304263activedeltorre친구 (IOI14_friend)C++20
46 / 100
15 ms1432 KiB
#include "friend.h" // Find out best sample #include<iostream> #include<vector> using namespace std; int val[100005]; int dp[100005][2]; vector<int>adj[10005]; void dfs(int curr,int par) { dp[curr][0]=0; dp[curr][1]=val[curr]; for(auto k:adj[curr]) { if(k!=par) { dfs(k,curr); dp[curr][0]+=max(dp[k][0],dp[k][1]); dp[curr][1]+=dp[k][0]; } } } int mat[15][15]; int findSample(int n,int confidence[],int host[],int protocol[]) { int maxval=0,sum=0; for(int i=0; i<n; i++) { maxval=max(maxval,confidence[i]); sum+=confidence[i]; } if(n<=10) { for(int i=1; i<n; i++) { if(protocol[i]==0) { adj[i].push_back(host[i]); adj[host[i]].push_back(i); mat[host[i]][i]=1; mat[i][host[i]]=1; } if(protocol[i]==1) { for(auto x:adj[host[i]]) { adj[x].push_back(i); adj[i].push_back(x); mat[i][x]=1; mat[x][i]=1; } } if(protocol[i]==2) { for(auto x:adj[host[i]]) { adj[x].push_back(i); adj[i].push_back(x); mat[i][x]=1; mat[x][i]=1; } adj[i].push_back(host[i]); adj[host[i]].push_back(i); mat[host[i]][i]=1; mat[i][host[i]]=1; } } int maxim=0; for(int i=1; i<(1<<n); i++) { int val=0; for(int j=0; j<n; j++) { if(((1<<j)&i)!=0) { val=val+confidence[j]; for(int z=0; z<n; z++) { if(((1<<z)&i)!=0) { if(mat[j][z]==1) { val=-1000000000; } } } } } maxim=max(maxim,val); } return maxim; } if(protocol[1]==2) { return maxval; } else if(protocol[1]==1) { return sum; } else { for(int i=0; i<n; i++) { val[i]=confidence[i]; } for(int i=1; i<n; i++) { adj[host[i]].push_back(i); adj[i].push_back(host[i]); } dfs(0,-1); return max(dp[0][0],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...