아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

정점 찾기

시간 제한1초메모리 제한512 MB

요약
연결된 그래프와 알 수 없는 정점 s에서 모든 정점까지의 최단 거리를 3으로 나눈 나머지가 주어질 때 s를 찾는다.
난이도

어려움10점 중 8점

유형
그래프, BFS, 수학, 최단 경로
정답자
아직 제출이 없습니다

문제

정점이 nn개, 간선이 mm개인 연결된 무방향 그래프가 주어진다. 정점은 11부터 nn까지 번호가 붙어 있다. 정점 번호 ss가 시작 정점이다. ss의 값은 알 수 없지만, 정점 ss에서 자기 자신을 포함한 모든 정점까지의 거리를 3으로 나눈 나머지는 알고 있다. ss를 찾아야 한다.

두 정점 사이의 거리는 두 정점을 잇는 최단 경로의 길이이다. 경로의 길이는 경로에 포함된 간선의 개수이다.

입력

첫째 줄에 정점의 개수 nn과 간선의 개수 mm이 주어진다. (1≤n,m≤500 0001 \le n, m \le 500\,000)

둘째 줄에 nn개의 정수 d1,d2,…,dnd_1, d_2, \ldots, d_n이 주어진다. (0≤di≤20 \le d_i \le 2) 여기서 did_i는 정점 ss와 정점 ii 사이의 거리를 3으로 나눈 나머지이다.

다음 mm개의 줄에는 간선이 주어진다. 이 중 ii번째 줄은 ii번째 간선을 나타내며, 간선으로 연결된 두 정점의 번호 uu와 vv가 주어진다. (1≤u,v≤n1 \le u, v \le n)

그래프에 자기 간선과 중복 간선은 없다. 그래프는 연결되어 있다.

출력

시작 정점의 번호 ss를 출력한다. 답이 여러 개라면 그중 아무거나 하나를 출력한다.

힌트

첫 번째 예제에서 정점 2와 모든 정점 사이의 거리 배열은 [1,0,1,1,2][1, 0, 1, 1, 2]이다. 이는 주어진 배열 dd와 같다.

두 번째 예제에서 정점 1에서 모든 정점까지의 거리 배열은 [0,1,2,3,2,1][0, 1, 2, 3, 2, 1]이다. 각 원소를 3으로 나눈 나머지를 구하면 배열 dd가 된다.

예제2

  1. 예제 1

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

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