Submission #902962

#TimeUsernameProblemLanguageResultExecution timeMemory
902962Muhammad_AneeqFriend (IOI14_friend)C++17
19 / 100
1057 ms35928 KiB
#include <vector> #include "friend.h" #include <iostream> using namespace std; int const N=2000; int ed[N][N]={}; int vis[N]={}; int ans=0; int nn; int val[N]={}; int cur[N]={}; void dfs(int i,int val1) { vis[i]=1; for (int j=0;j<nn;j++) cur[j]=cur[j]+(ed[i][j]==0); for (int j=0;j<nn;j++) { if (ed[i][j]&&!vis[j]&&cur[j]==0) dfs(j,val1+val[j]); } vis[i]=0; for (int j=0;j<nn;j++) cur[j]=cur[j]-(ed[i][j]==0); ans=max(ans,val1); } int findSample(int n,int confidence[],int host[],int protocol[]) { nn=n; for (int i=0;i<n;i++) val[i]=confidence[i]; for (int i=0;i<n;i++) for (int j=0;j<n;j++) ed[i][j]=1; for (int i=1;i<n;i++) { if (protocol[i]==0) ed[i][host[i]]=ed[host[i]][i]=0; else if (protocol[i]==1) { for (int j=0;j<n;j++) { if (ed[host[i]][j]==0) ed[i][j]=ed[j][i]=0; } } else { ed[i][host[i]]=ed[host[i]][i]=0; for (int j=0;j<n;j++) { if (ed[host[i]][j]==0) ed[i][j]=ed[j][i]=0; } } } for (int i=0;i<n;i++) dfs(i,val[i]); 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...