CSES - Planeetat II
  • Time limit: 1.00 s
  • Memory limit: 512 MB

Pelaat peliä, jossa on n planeettaa ja jokaisella planeetalla on teleportti jollekin planeetalle.

Tehtäväsi on käsitellä q kyselyä muotoa: kun aloitat planeetalta a, montako askelta tarvitset vähintään, jotta pääset planeetalle b?

Syöte

Syötteen ensimmäisellä rivillä on kaksi kokonaislukua n ja q: planeettojen määrä ja kyselyiden määrä. Planeetat on numeroitu kokonaisluvuin 1,2,\dots,n.

Seuraavalla rivillä on n kokonaislukua x_1,x_2,\dots,x_n: kunkin teleportin kohde. On mahdollista, että x_i=i eli teleportti johtaa samalle planeetalle.

Lopuksi syötteessä on q riviä, jotka kuvaavat kyselyt. Jokaisella rivillä on kaksi kokonaislukua a ja b: aloitat planeetalta a ja haluat päästä planeetalle b.

Tuloste

Tulosta jokaiseen kyselyyn vastauksena pienin askelten määrä, jolla pääset planeetalta a planeetalle b. Jos tämä ei ole mahdollista, tulosta -1.

Rajat

  • 1 \le n, q \le 2 \cdot 10^5
  • 1 \le x_i, a, b \le n

Esimerkki

Syöte:

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

Tuloste:

3
-1
0