Submission #151712

#TimeUsernameProblemLanguageResultExecution timeMemory
151712willi19Friend (IOI14_friend)C++14
11 / 100
41 ms6520 KiB
#include "friend.h"
#include<bits/stdc++.h>
using namespace std;
int n,c[100100],h[100100],p[100100],edge[12][12],dp[100000];
int ans(int state)
{
    if(dp[state]!=0)
        return dp[state];
    int ret=0;
    for(int i=0;i<n;i++)
        if(state&(1<<i))
            ret+=c[i];
    for(int i=0;i<n;i++)
    {
        if((state&(1<<i))!=0)
            continue;
        bool pos=true;
        for(int j=0;j<n;j++)
            if((state&1<<j)!=0&&edge[i][j]==1)
                pos=false;
        if(pos)
            ret=max(ret,ans(state|(1<<i)));
    }
    dp[state]=ret;
    return ret;
}
int findSample(int in,int confidence[],int host[],int protocol[]){
    n=in;
  	for(int i=0;i<n;i++)
    {
      c[i]=confidence[i];
      h[i]=host[i];
      p[i]=protocol[i];
    }
    for(int i=1;i<n;i++)
    {
        if(p[i]==0)
            edge[i][h[i]]=edge[h[i]][i]=1;
        else
        {
            for(int j=0;j<n;j++)
                edge[j][i]=edge[i][j]=edge[h[i]][j];
            if(p[i]==2)
                edge[i][host[i]]=edge[host[i]][i]=1;
        }
    }
    return ans(0);
}
#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...