인덕이와 산책

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

요약
그래프 위를 걷는 사람이 N번 지점에 도착하는 최소 시간을 구한다. 순간 이동하는 인덕이와 마주치면 인덕이의 주기 경로를 따라야 한다.
난이도

보통10점 중 7점

유형
BFS, 그래프, 최단 경로, 시뮬레이션
정답자
아직 제출이 없습니다

문제

인하는 NN개의 지점과 MM개의 양방향 길로 이루어져 있는 인하대의 산책로에서 산책하려고 한다. 이때, 11번 지점에서 시작해 NN번 지점에서 끝내려고 한다. 인하는 길을 따라 두 지점 사이를 이동하거나, 어떤 지점에서 이동하지 않고 11분 동안 쉴 수 있다. 두 지점 사이를 이동하는 데 걸리는 시간은 항상 11분이며, 서로 다른 두 지점 사이에는 최대 11개의 길만 존재한다. 또한, 출발지와 도착지가 같은 길은 존재하지 않는다.

한편, 인하대 내부에는 엄청 귀여운 오리인 인덕이가 살고 있다. 인덕이는 길과 무관하게 모든 임의의 두 지점 사이를 11분마다 순간 이동할 수 있다.

인덕이는 TT분 주기의 사이클을 나타내는 TT개의 번호로 이루어진 수열 cc를 따라 11분마다 산책로의 특정한 지점들 사이를 순간 이동한다. 즉, 인하가 산책을 시작한 시점으로부터 k(k≥0)k \left(k \ge 0\right)분이 지난 시점에 인덕이는 c_k mod Tc\_{k \bmod T}번 지점에 존재한다. 이 사이클은 항상 NN번 지점을 포함한다. 인하가 산책을 시작하는 순간, 인덕이도 이 사이클을 따라 순간 이동을 시작한다.

만약 인하가 산책 도중에 인덕이와 마주치면 인덕이의 엄청난 귀여움에 빠져버려서 인덕이가 NN번 지점에 도착할 때까지 인덕이의 뒤에 붙어 인덕이와 같이 순간 이동하게 된다. 인하와 인덕이가 둘 다 11번 지점에서 시작한다면, 인하는 바로 인덕이의 뒤에 붙어버리게 된다. 인하가 NN번 정점에 도착하면 무조건 산책이 끝난다.

인하가 NN번 지점에 도착하는 데 걸리는 최소 이동 시간을 구해보자.

입력

첫 번째 줄에 지점의 수 NN, 길의 수 MM, 그리고 사이클의 주기 TT가 주어진다.

이어서 MM개의 줄에 걸쳐 산책로의 ii번째 길이 연결하는 두 지점의 번호 a_i,b_ia\_i, b\_i가 공백으로 구분되어 주어진다.

M+2M+2 번째 줄에, 사이클에 포함된 지점의 번호 c_0,c_1,⋯ ,c_T−1c\_0, c\_1, \cdots, c\_{T-1}가 공백으로 구분되어 주어진다.

출력

인하가 NN번 지점에 도착하는 데에 걸리는 최단 시간을 분 단위로 출력한다. 만약 도착할 수 없다면, -1을 대신 출력한다.

제한

  • 1≤N≤1,0001\leq N\leq 1\\,000
  • 0≤M≤min⁡(N(N−1)2,1,000)0\leq M\leq\min \left( \displaystyle\frac{N \left(N-1 \right)}{2} ,1\\,000 \right)
  • 1≤T≤1,0001\leq T\leq 1\\,000
  • 1≤a_i,b_i≤N(1≤i≤M)1\leq a\_i,b\_i\leq N \left(1 \le i \le M \right)
  • 1≤c_j≤N(0≤j<T)1\leq c\_j\leq N \left(0 \le j < T \right)

힌트

정수 aa와 00이 아닌 정수 bb에 대해, a=bq+ra = bq + r와 0≤r<∣b∣0 \le r < |b|를 만족하는 정수 qq, rr이 유일하게 존재하며, 이때 rr를 aa를 bb로 나누었을 때 나머지라 한다.

a mod ba \bmod b는 aa를 bb로 나누었을 때 나머지를 의미한다.

예제5

  1. 예제 1

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

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

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

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

    입력
    8 7 2
    1 2
    2 3
    3 4
    4 1
    4 5
    5 6
    6 7
    6 8
    
    예상 출력
    5