Поміняти місцями


Submit solution

Points: 100 (partial)
Time limit: 2.0s
Memory limit: 1G

Author:
Problem type

У вас є простий неорієнтований граф з n вершинами, пронумерованими від 1 до n, і m ребрами, пронумерованими від 1 до m. Ребро i з'єднує вершини ui та vi.

Кожна вершина пофарбована або в червоний, або в синій колір. Колір вершини i представлений ci; вершина i пофарбована в червоний, якщо ci=0, і в синій, якщо ci=1.

Зараз Сергійко знаходиться на вершині 1, а Женька - на вершині n. Вони можуть повторювати наступний хід нуль або більше разів.

Кожен з них одночасно переходить до вершини, суміжної з поточною вершиною. При цьому вершини, до яких переміщуються Сергійко та Женька, повинні мати різні кольори.

Повторюючи цей хід, чи можуть Сергійко та Женька одночасно опинитися на вершинах n та 1 відповідно?

Якщо це можливо, знайдіть мінімальну кількість ходів, необхідних для цього. Якщо це неможливо, надрукуйте 1.

На початку вхідних даних вам дано t. Розв'яжіть задачу для t тестових випадків.

Input Specification

У першому рядку розміщене число t (1t1000) - кількість тестів.

У першому рядку кожного тесту задано два числа n (1n2000) та m (1mmin(n(n1)2,2000)) - кількість вершин та ребер.

У другому рядку задано n чисел ci (ci{0,1}).

У наступних m рядках задано по два числа ui та vi (1ui,vin) - номери вершин, які з'єднує i-те ребро.

Output Specification

Для кожного тесту виведіть довжину найкоротшого маршруту або 1, якщо його немає.

Sample Input 1

Copy
3
4 4
0 1 0 1
1 2
2 3
1 3
2 4
3 3
0 1 0
1 2
2 3
1 3
6 6
0 0 1 1 0 1
1 2
2 6
3 6
4 6
4 5
2 4

Sample Output 1

Copy
3
-1
3

Comments

There are no comments at the moment.