Finding a Centroid.
Dado un árbol de nodos, su tarea es encontrar un centroide, es decir, un nodo tal que, al designarlo como raíz del árbol, cada subárbol tenga como máximo
nodos.
Entrada
La primera línea de entrada contiene un entero : el número de nodos. Los nodos están numerados del
al
.
A continuación, hay
líneas que describen las aristas. Cada línea contiene dos enteros
y
: existe una arista entre los nodos
y
.
Salida
Imprima un entero: el nodo centroide.
Restricciones
Ejemplo de Entrada
5
1 2
2 3
3 4
3 5
Ejemplo de Salida
3
Comments
lo que pasa con este problema, es que es sacado del CSES y en el CSES dice que si hay varias posibilidades, puedes imprimir cualquiera. Deberían aclarar eso para este problema. (btw, también lo hice con dfs y me da WA dos casos (el AC fue por poner dos parches))
En este problema si encuentro dos centroides, cual de ellos debo imprimir?
sencillo: si despues del dfs encuentras que para los vecinos u existe algun nodo que satisfaga que el subarbol[vecino] > N/2 entonces te mueves hacia ese vecino y si hay algun centroide por ahi agarras ese, asi fue como me resulto. O sea usas primero el dfs para calcular el tama;o de cada componente y luego usas backtracking para encontrar el centroide