Submission #1136514

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

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