Submission #1136487

#TimeUsernameProblemLanguageResultExecution timeMemory
1136487Ak_16Friend (IOI14_friend)C++20
0 / 100
1096 ms320 KiB
#include <iostream>
#include <vector>
#include <queue>
using namespace std;

int findSample(int n, int con[], int hos[], int pro[]){
  int pow[15];
  pow[0] = 1;
  
  for(int i=1; i<=10; i++){pow[i] = 2*pow[i-1];}
  
  vector<int> adj[20];
  int cnt[20];
  for(int i=1; i<n; i++){
    if(pro[i]==0||pro[i]==2){adj[i].push_back(hos[i]); adj[hos[i]].push_back(i); }
    
    if(pro[i]>0){
      for(auto x: adj[hos[i]]){
        adj[i].push_back(x); adj[x].push_back(i);
      }
    }
  }
  int ans = 0;
  
  for(int i=1; i<pow[n]; i++){
    int k = i;
    for(int j=0; j<n; i++){cnt[j]=0;}
    
    for(int j=n-1; j>=0; j--){
      if(k>=pow[j]){cnt[j] = 1; k-=pow[j];}
    }
    
    int tru=1;
    int sum=0;
    
    for(int i=0; i<n; i++){
      if(cnt[i]==1){
        sum += con[i];
        for(auto x: adj[i]){
          if(cnt[x]==1){tru=0;}
        }
      }
    }
    
    if(tru==1){ans = max(ans, sum);}
  }
  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...