Cod sursa(job #2915900)

Utilizator lolismekAlex Jerpelea lolismek Data 25 iulie 2022 19:59:49
Problema Ferma Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <iostream>
#include <vector>
#include <bitset>

using namespace std;

const int N = 2e5;
vector <int> adj[N + 1];
bitset <N + 1> viz;

int sum[N + 1], maxi[N + 1];

void dfs(int nod){
	sum[nod] = viz[nod] = 1;

	for(auto vec : adj[nod])
		if(!viz[vec]){
			dfs(vec);
			maxi[nod] = max(maxi[nod], sum[vec]);
			sum[nod] += sum[vec];
		}
}


int main(){
	int n;
	cin >> n;
	for(int i = 1; i <= n - 1; i++){
		int a, b;
		cin >> a >> b;
		adj[a].push_back(b);
		adj[b].push_back(a);
	}

	dfs(1);

	for(int nod = 1; nod <= n; nod++)
		if(maxi[nod] <= n / 2 && n - sum[nod] <= n / 2){
			cout << nod;
			return 0;
		}
	
	return 0;
}