Submission #1300729

#TimeUsernameProblemLanguageResultExecution timeMemory
1300729SmuggingSpunTraffic (IOI10_traffic)C++20
0 / 100
4 ms496 KiB
#include "traffic.h"
#include<bits/stdc++.h>
using namespace std;
const int lim = 1e6 + 5;
vector<int>g[lim];
int n, cnt[lim];
void dfs(int s, int p = -1){
	for(int& d : g[s]){
		if(d != p){
			dfs(d, s);
			cnt[s] += cnt[d];
		}
	}
}
int LocateCentre(int N, int pp[], int S[], int D[]){
	n = N;
	for(int i = 0; i < n; i++){
		cnt[i] = pp[i];
		g[S[i]].push_back(D[i]);
		g[D[i]].push_back(S[i]);
	}
	dfs(0);
	int s = 0, p = -1;
	while(true){
		bool flag = true;
		for(int& d : g[s]){
			if(d != p && cnt[d] > (cnt[s] >> 1)){
				p = s;
				s = d;
				flag = false;
				break;
			}
		}
		if(flag){
			break;
		}
	}
	return s;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...