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

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

전화

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

요약
1번 소에서 N번 소까지 메시지를 전달하는 최소 시간을 구한다. i에서 j로 보내는 비용은 |i-j|이고, b_i 품종이 b_j 품종으로 보낼 수 있을 때만 전송이 가능하다.
난이도

보통10점 중 7점

유형
동적 계획법, 그래프, 최단 경로, 비트 연산
정답자
아직 제출이 없습니다

문제

농부 존의 소 NN마리가 일렬로 서 있다. 소들은 1…N1 \ldots N의 번호가 붙어 있다 (1≤N≤5⋅1041\le N\le 5\cdot 10^4). ii번째 소의 품종 번호는 bib_i이며 1…K1 \ldots K 범위에 있다 (1≤K≤501\le K\le 50). 소들은 11번 소에서 NN번 소로 메시지를 전달하는 최선의 방법을 찾으려고 한다.

ii번 소에서 jj번 소로 메시지를 전달하는 데는 ∣i−j∣|i-j|의 시간이 걸린다. 하지만 모든 품종이 서로 통신하려는 것은 아니며, 이는 K×KK \times K 행렬 SS로 주어진다. Sij=1S_{ij} = 1이면 품종 ii의 소가 품종 jj의 소에게 메시지를 전달하려 하고, 00이면 그렇지 않다. Sij=SjiS_{ij}=S_{ji}라는 보장은 없으며, 같은 품종끼리 통신하지 않으려는 경우 Sii=0S_{ii} = 0일 수도 있다.

메시지를 전달하는 데 필요한 최소 시간을 구하라.

입력

첫째 줄에 NN과 KK가 주어진다.

둘째 줄에 NN개의 정수 b1,b2,…,bNb_1,b_2,\ldots,b_N이 공백으로 구분되어 주어진다.

다음 KK개의 줄은 행렬 SS를 나타낸다. 각 줄은 KK비트 문자열이며, SijS_{ij}는 위에서 ii번째 문자열의 jj번째 비트이다.

출력

필요한 최소 시간을 정수 하나로 출력한다. 11번 소에서 NN번 소로 메시지를 전달할 수 없으면 −1-1을 출력한다.

예제1

  1. 예제 1

    입력
    5 4
    1 4 2 3 4
    1010
    0001
    0110
    0100
    
    예상 출력
    6