Company Queries II.


Submit solution

Points: 100 (partial)
Time limit: 2.0s
Memory limit: 512M

Authors:
Problem type
Allowed languages
Ada, Assembly, Awk, Brain****, C, C#, C++, Dart, Go, Java, JS, Kotlin, Lua, Pascal, Perl, Prolog, Python, Rust, Scala, Swift, VB, Zig

Una empresa tiene n empleados, que forman una jerarquía en forma de árbol donde cada empleado tiene un jefe, excepto el director general.

Tu tarea es procesar q consultas de la forma: ¿quién es el jefe común más bajo de los empleados a y b en la jerarquía?

Entrada

  • La primera línea de entrada tiene dos enteros n y q: el número de empleados y consultas. Los empleados están numerados 1,2,...,n y el empleado 1 es el director general de la empresa.
  • Después de esto, hay n-1 enteros e_2 , e_3, ..., e_n​: para cada empleado 2,...,n su jefe directo en la empresa.
  • Finalmente, hay q líneas que describen las consultas. Cada línea tiene dos enteros a y b: ¿quién es el jefe común más bajo de los empleados a y b?

Salida

Imprime la respuesta para cada consulta. Si tal jefe no existe, imprime -1.

Restricciones

  • 1 \leq n,q \leq 2 \cdot 10^5
  • 1 \leq e_i \leq i-1
  • 1 \leq a,b \leq n

Ejemplo de Entrada

5 3
1 1 3 3
4 5
2 5
1 4

Ejemplo de Salida

3
1
1

Comments

There are no comments at the moment.