Camino más largo con letras vecinas distintas

Tiempo límite 2 s
Memoria límite 256 MB
Casos de prueba 9
Dificultad Difícil Algoritmos
Mostrar (3) ÁrbolesDFSProgramación dinámica
Enviar solución

Puntos: 20

Tipos de problema
Lenguajes permitidos
C, C++, Java, Python, Rust

Un árbol tiene \(n\) nodos y cada nodo tiene una letra. Encuentra el camino más largo (contado en nodos) en el que dos nodos vecinos del camino nunca tienen la misma letra. El camino puede empezar y terminar en cualquier nodo y no repite nodos.

Entrada

La primera línea tiene \(n\) \((1 \le n \le 10^5)\). La segunda tiene \(p_0, \dots, p_{n-1}\). El árbol se da con el arreglo de padres: el padre del nodo \(i\) es \(p_i\), y la raíz es el nodo \(0\), con \(p_0 = -1\). La tercera tiene un texto de \(n\) letras minúsculas: la letra del nodo \(i\) es su carácter \(i\).

Salida

La cantidad de nodos del camino más largo.

Ejemplo 1

Entrada

6
-1 0 0 1 1 2
abacbe

Salida

3

Ejemplo 2

Entrada

4
-1 0 0 0
aabc

Salida

3

Ejemplo 3

Entrada

1
-1
z

Salida

1

Comentarios

No hay comentarios por el momento.