만드는 중입니다

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

소 항로 II

면접 대비

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

요약
순서가 정해진 비행 노선을 최대 두 개까지 이용해 도시 A에서 도시 B까지 이동하는 가장 저렴한 요금을 구합니다.
난이도

보통10점 중 5점

유형
완전 탐색, 해시맵
정답자
아직 제출이 없습니다

문제

농장의 추운 겨울 날씨가 지겨워진 소 베시는 따뜻한 곳으로 휴가를 떠나려 한다. 그런데 소에게 항공권을 파는 항공사는 Air Bovinia 한 곳뿐이고, 이 항공권의 구조는 조금 특이하다.

Air Bovinia는 비행기 NN대를 운영한다. 각 비행기는 도시 여러 곳을 정해진 순서대로 지나는 노선 하나를 운항한다. 예를 들어 어떤 비행기는 도시 1에서 출발해 도시 5와 도시 2를 거쳐 도시 8에 도착하는 노선을 운항한다. 한 노선 안에서 같은 도시가 두 번 나오지는 않는다.

베시가 어떤 노선을 이용하기로 하면, 그 노선에 있는 도시 아무 곳에서나 탑승하고 그보다 뒤에 있는 도시 아무 곳에서나 하차할 수 있다. 첫 도시에서 탑승할 필요도, 마지막 도시에서 하차할 필요도 없다. 노선마다 요금이 정해져 있고, 노선의 일부만 이용해도 지나는 도시 수와 무관하게 그 요금을 전액 내야 한다. 같은 노선은 한 번만 이용할 수 있다. 즉 한 노선을 이용한 뒤에 그 노선의 다른 구간을 다시 이용할 수는 없다.

베시는 농장이 있는 도시 AA에서 목적지인 도시 BB까지 가는 가장 싼 방법을 찾으려 한다. 일정이 복잡해지는 것은 싫으므로 노선은 최대 두 개까지만 이용한다. 베시가 내야 하는 최소 요금을 구하라.

입력

첫째 줄에 AA, BB, NN이 공백으로 구분되어 주어진다. (1≤A≤100001 \le A \le 10000, 1≤B≤100001 \le B \le 10000, 1≤N≤5001 \le N \le 500)

이어지는 2N2N개의 줄에 노선 정보가 노선마다 두 줄씩 주어진다. 각 노선의 첫 줄에는 그 노선의 요금과 노선에 있는 도시 수가 주어진다. 요금은 11 이상 10001000 이하의 정수이고, 도시 수는 11 이상 500500 이하의 정수이다. 둘째 줄에는 노선에 있는 도시가 비행 순서대로 주어지며, 각 도시는 11 이상 1000010000 이하의 정수로 나타낸다.

출력

노선을 최대 두 개 이용해 도시 AA에서 도시 BB까지 가는 최소 요금을 한 줄에 출력한다. 그런 방법이 없으면 −1-1을 출력한다. AA와 BB가 같으면 00을 출력한다.

예제5

  1. 예제 1

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

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

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

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

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