Submission #492074

#TimeUsernameProblemLanguageResultExecution timeMemory
492074StoRovinatoFriend (IOI14_friend)C++17
16 / 100
16 ms460 KiB
#include "friend.h"

#include <bits/stdc++.h>

using namespace std;

vector<int> nodi[1000];
int* valori;

int dfs(int v, int p, bool conta)
{
	int sum = 0;
	for (int u: nodi[v])
	{
		if (u != p)
			sum += dfs(u, v, conta ^ 1);
	}

	if (conta)
		sum += valori[v];
	return sum;
}

int findSample(int n,int confidence[],int host[],int protocol[])
{
	valori = confidence;

	int ris = 0;
	if (protocol[1] == 0)
	{
		for (int i = 1; i < n; i++)
		{
			nodi[host[i]].push_back(i);
			nodi[i].push_back(host[i]);
		}

		int tot = 0;
		for (int i = 0; i < n; i++)
			tot += confidence[i];

		int parz = dfs(0, -1, true);
		ris = max(parz, tot - parz);
	}
	if (protocol[1] == 1)
	{
		for (int i = 0; i < n; i++)
			ris += confidence[i];
	}
	else
	{
		for (int i = 0; i < n; i++)
			ris = max(ris, confidence[i]);
	}

	return ris;
}
#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...