만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

베를란디아의 주택

면접 대비

시간 제한2초메모리 제한1024 MB

요약
연결된 도로 그래프에서 주민 수가 서로 다른 두 주거 교차로 사이의 최단 거리를 구합니다.
난이도

보통10점 중 6점

유형
그래프, BFS
정답자
아직 제출이 없습니다

문제

베를란디아의 수도에는 교차로가 nn개 있다. 그중 일부에는 주택이 있다. 모든 1≤i≤n1 \le i \le n에 대해 aia_i를 교차로 ii에 있는 주택에 사는 가족의 인원 수라고 하자. aia_i가 0이면 교차로 ii에는 주택이 없다.

일부 교차로는 도로로 연결되어 있다. 베를란디아에는 도로가 mm개 있다. 각 도로는 양방향으로 다닐 수 있다. 각 도로는 서로 다른 두 교차로를 잇고, 두 교차로를 직접 잇는 도로는 많아야 하나다. 어느 교차로에서든 도로를 따라 다른 모든 교차로에 갈 수 있다. 교차로 ii와 jj 사이의 거리는 ii에서 jj까지 가는 경로에서 지나는 도로의 최소 개수이다.

한 가족이 다른 가족을 방문하면, 각 사람은 상대 가족의 사람 한 명과 짝을 이뤄 둘이 대화한다. 짝을 찾지 못한 사람이 한 명이라도 있으면 두 가족의 방문은 지루하다.

이유는 알 수 없지만, 베를란디아 정부는 vv번 주택의 가족이 uu번 주택의 가족을 방문하면 지루해지는 두 주택 vv와 uu를 찾아 달라고 요청한다. 즉 av>0a_v > 0, au>0a_u > 0, av≠aua_v \ne a_u이고 vv에서 uu까지의 거리가 최소여야 한다. 인원 수가 서로 다른 주택이 두 개 이상 있다는 것은 보장된다.

입력

첫 줄에 교차로의 수 nn과 도로의 수 mm이 주어진다 (2≤n≤10000002 \le n \le 1000000, 1≤m≤10000001 \le m \le 1000000).

둘째 줄에 nn개의 정수 aia_i가 주어진다 (0≤ai≤1090 \le a_i \le 10^9).

이어지는 mm개의 줄에는 ii번째 도로가 잇는 두 교차로 viv_i와 uiu_i가 주어진다 (1≤vi,ui≤n1 \le v_i, u_i \le n, vi≠uiv_i \ne u_i).

출력

인원 수가 서로 다른 두 주택 사이의 최소 거리를 정수 하나로 출력한다.

힌트

첫 번째 예시에서는 교차로 1번과 3번에만 주택이 있고, 두 주택의 인원 수가 다르다. 두 주택 사이의 거리는 2이며, 최단 경로는 도로 1번과 2번을 사용한다.

예제2

  1. 예제 1

    입력
    4 4
    1 0 2 0
    1 2
    2 3
    3 4
    4 1
    
    예상 출력
    2
    
  2. 예제 2

    입력
    5 4
    1 0 2 1 0
    1 5
    4 5
    5 2
    2 3
    
    예상 출력
    3