Submission #1265100

#TimeUsernameProblemLanguageResultExecution timeMemory
1265100JerTraffic (IOI10_traffic)C++20
100 / 100
422 ms149152 KiB
#include "traffic.h"
#include <bits/stdc++.h>

using namespace std;

const int MAXN = 1e6 + 5;
vector<int> con[MAXN];
int p[MAXN];
int n, res = INT_MAX, best = -1;
int total = 0;

int find(int i, int par)
{
	int sum = 0, most = 0;

	for (auto j : con[i])
	{
		if (j == par)
			continue;
		int r = find(j, i);
		sum += r, most = max(most, r);
	}

	sum += p[i];
	most = max(most, total - sum);

	if (most < res)
		best = i, res = most;

	return sum;
}

int LocateCentre(int N, int P[], int S[], int D[])
{
	n = N;
	for (int i = 0; i < n - 1; i++)
		con[S[i]].push_back(D[i]), con[D[i]].push_back(S[i]);

	for (int i = 0; i < n; i++)
		total += P[i], p[i] = P[i];

	find(0, 0);

	return best;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...