날다람쥐 Batch
Time limit | Memory limit | # of submissions | # of submitted users | Solved # | Accepted user ratio |
---|---|---|---|---|---|
2000 ms | 256 MiB | 59 | 23 | 22 | 95.65% |
출처: http://koistudy.net/?mid=prob_page&NO=964&SEARCH=0
날다람쥐란 나무에서 나무로 점프하여 글라이더 처럼 날아서 이동하는 특이한 다람쥐이다.
GSHS의 날다람쥐 서식처에는 개의 나무가 있으며 각 나무는 번호가 1부터 까지 부여되어 있으며, 번째 나무의 높이는 각각 이다.
날다람쥐는 나무를 오르거나 내릴 수 있고, 나무의 임의의 위치에서 점프하여 날아갈 수 있다.
날다람쥐가 나무를 미터 오르거나 내리는데 초가 걸린다. (정수 단위로만 이동 가능하다.)
날다람쥐가 한 나무에서 다른 나무로 날아가는데 걸리는 시간 가 주어지며, 날다람쥐가 날아가는 초 동안 미터만큼 고도가 떨어진다.(정수 거리로만 날아갈 수 있다.)
즉 날다람쥐가 어떤 나무의 높이에서 미터 떨어진 나무로 날아간다면, 그 나무의 미터의 위치에 도착한다. (단, 날아가는 동안 고도가 이 되면, 이동 불가능한 것으로 본다.)
각 개의 나무의 높이와, 각 나무에서 나무로 날아서 이동가능한 나무의 쌍 개와 날아가는데 걸리는 시간 가 주어진다.
다람쥐는 처음에 나무 1의 위치에 있으며, 최종적으로 자기의 집이 있는 나무 의 꼭대기로 가고자 한다.
주어진 정보를 이용하여 날다람쥐가 목적지까지 가는데 디는 최소시간을 구하는 프로그램을 작성하시오.
입력
첫 번째 줄에 나무의 수 과, 이동 가능한 경로의 수 , 처음 다람쥐가 나무 1에 위치한 높이 가 공백으로 구분되어 입력된다.
두 번째 줄부터 줄에 걸쳐서 각 나무의 높이가 주어진다.
다음 줄부터 줄에 걸쳐서 이동 가능한 나무 와 두 나무 간의 비행시간 가 공백으로 구분되어 입력된다.
출력
조건을 만족하는 최소 시간을 출력한다. 만약 도달 불가능하다면 -1
을 출력한다.
제약 조건
- ()
- ()
부분문제
부분문제 1 [25점]
- ()
- ()
부분문제 2 [25점]
부분문제 3 [50점]
추가 제약 조건이 없다.
예제
입력
5 5 0
50
100
25
30
10
1 2 10
2 5 50
2 4 20
4 3 1
5 4 20
출력
110
예로, 아래와 같이 이동하면 된다.
- 나무 1을 50미터 올라간다.
- 나무 1에서 나무 2로 날아간다.
- 나무 2에서 나무 4로 날아간다.
- 나무 4에서 나무 5로 날아간다.
- 나무 5를 10미터 올라간다.
입력
2 1 0
1
1
1 2 100
출력
-1
나무 1에서 나무 2로 날아갈 수 없다.
입력
4 3 30
50
10
20
50
1 2 10
2 3 10
3 4 10
출력
100