Submission #719070

#TimeUsernameProblemLanguageResultExecution timeMemory
719070mseebacherFriend (IOI14_friend)C++17
11 / 100
1075 ms65536 KiB
#include "friend.h"
#include <bits/stdc++.h> 

using namespace std;

vector<set<int>> friends;

// Find out best sample
int findSample(int n,int confidence[],int host[],int protocol[]){
	friends.assign(n,{});
	for(int i = 1;i<n;i++){
		if(protocol[i] == 0){
			friends[i].insert(host[i]);
			friends[host[i]].insert(i);
		}else{
			set<int>::iterator it = friends[host[i]].begin();
			for(;it != friends[host[i]].end();it++){
				int f = *it;
				friends[f].insert(i);
				friends[i].insert(f);
			}
			if(protocol[i] == 2){
				friends[i].insert(host[i]);
				friends[host[i]].insert(i);
			}
		}	
		 
	}
	
	long long ans = 0;
	for(int mask = 0;mask<(1<<n);mask++){
		vector<int> x;
		long long sum = 0;
		for(int i = 0;i<n;i++){
			if(mask & (1 << i)){
				x.push_back(i);
				sum += confidence[i];
			}
		}
		bool b = 1;
		for(int i = 0;i<(int)x.size();i++){
			for(int j = i+1;j<(int)x.size();j++){
				if(friends[x[i]].find(x[j]) != friends[x[i]].end()){
					b = 0;
					break;
				}
			}
			if(!b) break;
		}
		if(b){
			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...