Зустріч на іподромі
Limits: 4 sec., 512 MiB
На фермі Зеника та Марічки є іподром, що складається з nn ділянок, пронумерованих від 11 до nn. Ділянки з’єднані односторонніми доріжками — з кожної ділянки виходить рівно одна доріжка. Доріжка з ділянки ii веде до ділянки fifi (якщо fi=ifi=i, це означає, що доріжка починається та закінчується в тій самій ділянці ii).
Вам потрібно відповісти на qq таких запитів.
Є двоє жеребців: гнідий та вороний. Гнідий жеребець стоїть на ділянці uu, а вороний — на ділянці vv. За одну хвилину кожен кінь може залишитися на місці або доріжкою перейти до тієї ділянки іподрому, куди вона веде. Зауважте, що з кожної ділянки є завжди одна доріжка. Порахуйте, за який найменший час обоє жеребців можуть опинитися на тій самій ділянці іподрому, або скажіть, що це неможливо.
Input
У першому рядку задано два цілих числа nn та qq — кількість ділянок іподрому та кількість запитів.
У другому рядку задано nn цілих чисел fifi, що описують доріжки між ділянками іподрому.
У наступних qq рядках задано по два цілих числа uu та vv — початкові ділянки гнідого й вороного жеребців.
Output
У qq рядках виведіть по одному
цілому числу — найменший час у хвилинах, за який обидва жеребці можуть
опинитися на тій самій ділянці, або -1
, якщо це
неможливо.
Constraints
1≤n,q≤3⋅1051≤n,q≤3⋅105,
1≤fi,u,v≤n1≤fi,u,v≤n.
Оцінювання складається з таких блоків:
по 1 балу за кожен приклад з умови,
7 балів: fi=ifi=i,
14 балів: n,q≤103n,q≤103,
16 балів: для кожної вершини vv існує вершина uu така що fu=vfu=v,
21 бал: fi≤ifi≤i,
26 балів: з усіх вершин можна дійти до вершини 1,
14 балів: без додаткових обмежень.
Бали за блок ви отримаєте, тільки якщо ваша програма пройде всі тести з блоку.
Samples
Input (stdin) | Output (stdout) |
---|---|
8 5 2 3 1 2 4 7 6 7 1 5 6 7 6 8 2 5 4 7 | 2 1 1 2 -1 |
Input (stdin) | Output (stdout) |
---|---|
7 4 2 3 4 5 6 7 1 2 3 2 5 2 6 7 7 | 1 3 3 0 |
Notes
У першому прикладі для запиту u=1,v=5u=1,v=5 відповідь дорівнює 22. Тобто якщо гнідий жеребець починає на ділянці 11, а вороний — на ділянці 55, то вони можуть опинитися на одній ділянці за дві хвилини.
За першу хвилину гнідий жеребець переходить з ділянки 11 на ділянку 22, а вороний — з ділянки 55 на ділянку 44.
За другу хвилину вороний жеребець переходить з ділянки 44 на ділянку 22, а гнідий стоїть на місці на ділянці 22.
Для запиту u=4,v=7u=4,v=7 гнідий і вороний жеребець не можуть опинитися на одній ділянці.