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

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

괄호 경로

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

요약
각 간선에 괄호 기호가 붙은 방향 그래프에서 s에서 t로 가는 경로 중 간선의 기호가 올바른 괄호열을 이루는 가장 짧은 경로의 길이를 구하고, 없으면 -1을 출력한다.
난이도

어려움10점 중 8점

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

문제

괄호 문자는 (, ), [, ], {, }, <, > 여덟 개 중 하나다. 괄호 문자로만 이루어진 문자열이 다음 두 조건을 만족하면 올바른 괄호 식이라고 한다.

  • 모든 여는 괄호는 같은 종류의 닫는 괄호와 짝을 이루고, 모든 닫는 괄호도 짝이 있다.
  • 짝을 이루는 두 괄호 쌍은 교차하지 않는다. 두 쌍은 서로 떨어져 있거나, 한 쌍이 다른 쌍 안에 완전히 들어 있다.

예를 들어 ([])<> 는 올바른 괄호 식이지만, <{>} 는 중괄호 쌍과 꺾쇠 괄호 쌍이 교차하므로 올바르지 않다.

정점이 nn개인 방향 그래프가 주어진다. 각 간선에는 괄호 문자가 하나씩 적혀 있다. 어떤 경로가 지나는 간선의 문자를 순서대로 이어 붙인 문자열이 올바른 괄호 식이면 그 경로를 올바른 경로라고 한다. 정점 ss에서 정점 tt까지 가는 가장 짧은 올바른 경로의 길이를 구하라. 경로는 같은 정점을 여러 번 지나도 된다. 경로의 길이는 지나는 간선의 개수다.

간선을 하나도 지나지 않는 빈 경로도 올바른 괄호 식이므로, ss와 tt가 같으면 답은 00이다.

입력

첫째 줄에 정수 nn, mm, ss, tt가 주어진다 (1≤n≤2001 \leq n \leq 200, 0≤m≤20000 \leq m \leq 2000, 1≤s,t≤n1 \leq s, t \leq n). 차례대로 정점 개수, 간선 개수, 시작 정점, 도착 정점이다.

다음 mm개 줄에는 각각 정수 xx, yy와 괄호 문자 bb가 주어진다 (1≤x,y≤n1 \leq x, y \leq n). 정점 xx에서 정점 yy로 가는 간선에 문자 bb가 적혀 있다는 뜻이다. 자기 자신으로 돌아오는 간선이나 같은 두 정점을 잇는 간선이 여러 개 있을 수 있다.

출력

ss에서 tt까지 가는 가장 짧은 올바른 경로의 길이를 한 줄에 출력한다. 그런 경로가 없으면 −1-1을 출력한다. 경로가 존재한다면 그 길이는 101810^{18}을 넘지 않는다.

예제2

  1. 예제 1

    입력
    4 4 1 4
    1 2 (
    2 2 [
    2 3 ]
    3 4 )
    
    예상 출력
    4
    
  2. 예제 2

    입력
    5 4 1 5
    1 2 <
    2 3 {
    3 4 >
    4 5 }
    
    예상 출력
    -1