재즈 여행

정해진 순회 일정과 편도 및 왕복 항공권 가격이 주어질 때, 모든 구간을 이동하는 최소 비용을 구한다.

보통7그래프그리디해시맵아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

이반은 재즈 밴드와 함께 대규모 유럽 순회공연을 계획하고 있다. 유럽에는 도시가 nn개 있고, 각 도시에는 1부터 nn까지 번호가 붙어 있다. 이반은 도시 a1,a2,,ada_1, a_2, \ldots, a_d에서 정확히 이 순서대로 공연을 dd번 연다. 연속한 두 공연이 같은 도시에서 열리는 일은 없으며(aiai+1a_i \ne a_{i+1}) 어떤 도시는 여러 번 방문할 수도 있다. 투어는 시작한 도시에서 끝난다(a1=ada_1 = a_d).

이반은 도시 aia_i에서 ai+1a_{i+1}로 갈 때 항상 직항편을 탄다. 그래도 항공권을 잘 골라 사서 돈을 아끼려 한다. 항공사는 수요와 공급에 따라 요금을 정하므로 같은 두 도시 사이에서 편도 항공권이 왕복 항공권보다 비쌀 수도 있다.

살 수 있는 항공권은 두 종류다.

  • 출발 도시 aa에서 도착 도시 bb로 가는 편도 항공권으로는 aa에서 bb로 한 번 날아갈 수 있다. 반대 방향으로는 쓸 수 없다.
  • 출발 도시 aa에서 도착 도시 bb로 가는 왕복 항공권으로는 aa에서 bb로 한 번, bb에서 aa로 한 번 날아갈 수 있다. 돌아오는 구간(bb에서 aa)은 쓰지 않아도 된다. 다만 두 구간은 순서대로 이용해야 한다. 그 항공권의 첫 구간으로 aa에서 bb로 먼저 날아가지 않았다면 돌아오는 구간으로 bb에서 aa로 날아갈 수 없다.

살 수 있는 항공권 요금 목록이 주어질 때, 이반이 투어를 마치려면 항공권에 최소 얼마를 써야 하는지 구하라. 각 요금의 항공권은 원하는 만큼 살 수 있다. 다시 말해 이반은 모든 i=1,2,,d1i = 1, 2, \ldots, d-1에 대해 aia_i에서 ai+1a_{i+1}로 직항편을 타야 한다. 주어진 요금으로 투어를 마칠 수 있다고 가정해도 된다.

입력

첫째 줄에 유럽의 도시 수 nn과 공연 수 dd가 주어진다. (2n,d3000002 \le n, d \le 300000)

둘째 줄에 투어 일정 a1,a2,,ada_1, a_2, \ldots, a_d가 주어진다. (1ain1 \le a_i \le n, aiai+1a_i \ne a_{i+1}, a1=ada_1 = a_d)

셋째 줄에 항공권 요금의 수 mm이 주어진다. (3m3000003 \le m \le 300000) 다음 mm개 줄 가운데 kk번째 줄에는 kk번째 요금을 나타내는 네 토큰 sks_k, dkd_k, tkt_k, pkp_k가 주어진다.

  • sks_kdkd_k는 각각 출발 도시와 도착 도시다. (1sk,dkn1 \le s_k, d_k \le n, skdks_k \ne d_k)
  • tkt_k는 대문자 O 또는 R이며, 각각 편도 항공권과 왕복 항공권을 뜻한다.
  • pkp_k는 항공권 가격이며 정수다. (1pk1091 \le p_k \le 10^9)

출력

이반이 계획한 투어를 마칠 수 있도록 항공권을 사는 데 필요한 최소 금액을 출력한다.