Submission #227966

#TimeUsernameProblemLanguageResultExecution timeMemory
227966urd05친구 (IOI14_friend)C++14
30 / 100
45 ms5240 KiB
#include <bits/stdc++.h> using namespace std; int n; int co[100000]; int ho[100000]; int pro[100000]; int con[10][10]; vector<int> son[1000]; int dp[1000][2]; int ans(int now,int stat) { if (dp[now][stat]!=-1) { return dp[now][stat]; } int ret=0; if (stat==1) { ret+=co[now]; } if (stat==0) { for(int i=0;i<son[now].size();i++) { ret+=max(ans(son[now][i],0),ans(son[now][i],1)); } } else { for(int i=0;i<son[now].size();i++) { ret+=ans(son[now][i],0); } } dp[now][stat]=ret; return ret; } int findSample(int nn,int conf[],int hos[],int prot[]) { n=nn; for(int i=0;i<n;i++) { co[i]=conf[i]; ho[i]=hos[i]; pro[i]=prot[i]; } if (n<=10) { for(int i=1;i<n;i++) { if (pro[i]==0) { con[ho[i]][i]=1; con[i][ho[i]]=1; } if (pro[i]==1) { for(int j=0;j<n;j++) { if (con[ho[i]][j]==1) { con[i][j]=1; con[j][i]=1; } } } if (pro[i]==2) { for(int j=0;j<n;j++) { if (con[ho[i]][j]==1) { con[i][j]=1; con[j][i]=1; } } con[ho[i]][i]=1; con[i][ho[i]]=1; } } int ret=0; for(int i=0;i<(1<<n);i++) { bool use[10]; memset(use,0,sizeof(use)); for(int j=0;j<n;j++) { if ((i&(1<<j))!=0) { use[j]=true; } } bool flag=true; for(int j=0;j<n;j++) { for(int k=0;k<n;k++) { if (con[k][j]==1&&use[k]&&use[j]) { flag=false; break; } } } if (!flag) { continue; } int val=0; for(int j=0;j<n;j++) { if (use[j]) { val+=co[j]; } } ret=max(ret,val); } return ret; } for(int i=1;i<n;i++) { son[ho[i]].push_back(i); } memset(dp,-1,sizeof(dp)); return max(ans(0,0),ans(0,1)); }

Compilation message (stderr)

friend.cpp: In function 'int ans(int, int)':
friend.cpp:21:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i=0;i<son[now].size();i++) {
                     ~^~~~~~~~~~~~~~~~
friend.cpp:26:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i=0;i<son[now].size();i++) {
                     ~^~~~~~~~~~~~~~~~
#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...