Submission #584863

#TimeUsernameProblemLanguageResultExecution timeMemory
584863jack715Friend (IOI14_friend)C++14
0 / 100
2 ms1108 KiB
#include "friend.h"
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define pp pop_back
#define mp make_pair
#define bb back
#define ff first
#define ss second

using namespace std; 

// Find out best sample
int findSample(int n,int confidence[],int host[],int protocol[]){
	vector<vector<int> > path(n);

	for (int i = 1; i < n; i++) {
		if (protocol[i] == 0) {
			path[i].pb(host[i]);
			path[host[i]].pb(i);
		} else if (protocol[i] == 1) {
			for (int con : path[host[i]]) {
				path[i].pb(con);
				path[con].pb(i);
			}
		} else {
			for (int con : path[host[i]]) {
				path[i].pb(con);
				path[con].pb(i);
			}
			path[i].pb(host[i]);
			path[host[i]].pb(i);
		}
	}

	vector<pair<int, int> > nums;
	vector<bool> used(n, 0);
	for (int i = 0; i < n; i++) {
		nums.pb({path[i].size(), i});		
	}
	sort(nums.begin(), nums.end());
	int ans = 0;
	for (int i = 0; i < n; i++) {
		if (used[nums[i].ss]) continue;
		ans++;
		for (int next : path[nums[i].ss]) 
			used[next] = 1;
	}
	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...