활자 그래프
시간 제한1.5초메모리 제한1024 MB
앞선 그래프를 시작점과 끝점을 정해 끼워 넣을 수 있을 때, T번째 그래프에서 정점 1에서 정점 2까지의 최단 거리를 구합니다.
문제
고려 시대의 학자 하의비는 금속 활자로 그래프를 찍어 내는 작업을 하고 있었다. 그러던 중 하의비는 활자로 찍어 내던 활자 그래프에서 최단 경로가 궁금해졌다.
하의비는 현재 개의 활자 그래프를 가지고 있다. 만든 순서대로 1번부터 번까지 번호가 매겨져 있다.
번 활자 그래프는 개의 번호가 붙은 정점으로 이루어져 있으며, 정점에는 1 이상 이하의 번호가 붙어 있다. 이후 다음 두 가지 작업 중 하나를 반복해서 번 활자 그래프를 완성한다.
- 번호가 붙은 번 정점에서 번 정점으로 가는 가중치가 있는 단방향 간선을 추가한다.
- 번째 활자 그래프를 찍는다. 시작점과 끝점이 번 활자 그래프의 번 정점과 번 정점이 되도록 번째 활자 그래프의 정점과 간선을 추가한다. 이때 생기는 번째 활자 그래프의 정점에는 번호가 붙지 않는다. ()
모든 활자 그래프의 시작점은 1번 정점이고, 끝점은 2번 정점이다.
이때 번 활자 그래프에서 1번 정점에서 2번 정점으로 가는 최단 경로를 구해 보자.
입력
첫 줄에 활자 그래프의 개수 가 주어진다. ()
각 활자 그래프의 정보는 다음과 같이 주어진다.
번 활자 그래프의 정보를 입력받는다고 하자.
- 첫 줄에는 번 활자 그래프의 번호가 붙은 정점의 개수 와 간선이나 다른 활자 그래프를 찍은 횟수 가 공백으로 구분되어 주어진다. (, )
- 이후 개의 줄에 정수 , , 가 공백으로 구분되어 주어진다. (, , )
- 이면 번 정점에서 번 정점으로 가는 가중치 의 단방향 간선을 찍은 것이다.
- 이면 시작점을 번 정점, 끝점을 번 정점에 맞춰 번 활자 그래프를 찍은 것이다.
번호가 붙은 정점 개수의 합은 을 넘지 않는다. 간선이나 다른 활자 그래프를 찍은 횟수의 합은 을 넘지 않는다.
출력
번 활자 그래프에서 1번 정점에서 2번 정점으로 가는 최단 경로의 길이를 출력한다. 1번 정점에서 2번 정점으로 가는 경로가 없거나, 이 값이 보다 크면 -1을 출력한다.