Submission #1276154

#TimeUsernameProblemLanguageResultExecution timeMemory
1276154KindaGoodGamesFriend (IOI14_friend)C++17
0 / 100
2 ms580 KiB
#include "friend.h"
#include<bits/stdc++.h>

using namespace std;

struct UnionFind{
	vector<int> par;

	UnionFind(int n){
		par.resize(n);
		iota(par.begin(),par.end(),0);
	}

	int find(int i){
		if(par[i] == i) return i;
		return par[i] = find(par[i]);
	}

	void unite(int i, int j){
		i = find(i);
		j = find(j);
		par[i] = j;
	}
};

vector<int> arr,dpT, dpN;
	vector<vector<int>> adj;

void DFS(int v){
	dpT[v] = arr[v];
	int oth1 = 0;

	for(auto u : adj[v]){
		DFS(u);
		dpT[v] += dpN[u];
		dpN[v] += dpT[u];
	}
}

// Find out best sample
int findSample(int n,int confidence[],int host[],int protocol[]){
	int ans=0;
	adj.resize(n);
	for(int i = 1; i < n; i++){
		adj[host[i]].push_back(i);
	}
	arr.resize(n);
	dpT.resize(n);
	dpN.resize(n);
	for(int i = 0; i < n; i++){
		arr[i] = confidence[i];
	}

	DFS(0);
	for(int i = 0; i < n; i++){
		ans = max({ans, dpT[i], dpN[i]});
	}
	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...