Submission #1064780

#TimeUsernameProblemLanguageResultExecution timeMemory
1064780GrayFriend (IOI14_friend)C++17
11 / 100
1049 ms8688 KiB
#include "friend.h"
#include<bits/stdc++.h>
#define ll long long
#define ff first
#define ss second
#define ln "\n"
#define ld long double

using namespace std;

vector<vector<int>> A;

int findSample(int n,int confidence[],int host[],int protocol[]){
	A.clear(); A.resize(n);
	for (int i=1; i<n; i++){
		if (protocol[i]==0){
			A[host[i]].push_back(i);
			A[i].push_back(host[i]);
		}else if (protocol[i]==2){
			A[host[i]].push_back(i);
			A[i].push_back(host[i]);
			for (auto v:A[host[i]]){
				A[v].push_back(i);
				A[i].push_back(v);
			}
		}else{
			for (auto v:A[host[i]]){
				A[v].push_back(i);
				A[i].push_back(v);
			}
		}
	}
	int ans=0;
	for (ll i=0; i<(1<<n); i++){
		bool pos=1;
		for (ll j=0; j<n; j++){
			if (i&(1<<j)){
				for (auto v:A[j]){
					if (((1<<v)&i) and v!=j) pos=0;
				}
			}
		}
		if (pos){
			int res=0;
			for (ll j=0; j<n; j++){
				if (i&(1<<j)) {
					res+=confidence[j];
				}
			}
			ans=max(ans, res);
		}
	}
	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...