Submission #1339329

#TimeUsernameProblemLanguageResultExecution timeMemory
1339329axtelnTraffic (IOI10_traffic)C++20
0 / 100
17 ms35652 KiB
#include "traffic.h"
#include <vector>
using namespace std;

vector<int> sub(1000001),parent(1000001);
vector<vector<int>> graph(1000001);
vector<int> arr(1000001);

int dfs(int u,int p){
	sub[u]=arr[u];
	parent[u]=p;
	for (int v:graph[u]){
		if (v==p) continue;
		sub[u] += dfs(v,u);
	}return sub[u];
}

int LocateCentre(int N, int pp[], int S[], int D[]) {
	for (int i=0;i<N;i++){
		arr[i]=pp[i];
	}
	
	for (int i=0;i<N-1;i++){
		graph[S[i]].push_back(D[i]);
		graph[D[i]].push_back(S[i]);
	}
	
	dfs(1,-1);
	int mn=2e9;
	for (int u=1;u<=N;u++){
		int c=0;
		for (int v:graph[u]){
			int comp=0;
			if (parent[u] == v){
				comp = sub[1]-sub[u];
			}else{
				comp = sub[v];
			}c=max(comp,c);
		}
		if (c!=0)mn=min(mn,c);
	}return mn;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...