Kaka와 Bebe

면접 대비

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

요약
0번에서 N-1번으로 가는 경로 중 카카 합과 베베 합이 각각 1000 이하인 것을 찾아 두 합의 곱을 최소로 만든다.
난이도

보통10점 중 7점

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

문제

"Kaka Is You"라는 퍼즐 게임이 인디 게이머들 사이에서 조용히 인기를 끌고 있다. 현식이도 예외가 아니었다. 현식이는 끙끙대며 밤새 퍼즐을 풀다가 잠이 들었다. 눈을 떴더니 눈앞에 "Kaka Is You"의 등장동물 Kaka와 Bebe가 잔뜩 보이기 시작했다. 현식이는 생각했다.

'아니, 이건 꿈이야! 내가 꿈속에서까지 Kaka와 Bebe를 봐야 해?'

그런데 저 멀리 탈출구가 보인다. 분명 저 탈출구로 나가면 꿈에서 깨어날 수 있을 것이다.

현식이의 현재 상황은 다음과 같다. 정점 NN개로 이루어진 그래프가 주어진다. 각 정점에는 0번부터 N−1N-1번까지 번호가 붙어 있고, 현식이는 정점 0번에, 탈출구는 정점 N−1N-1번에 있다. 간선은 모두 양방향이며 총 MM개가 있다. 각 간선에도 0번부터 M−1M-1번까지 번호가 붙어 있고, ii번 간선 위에는 Kaka가 cic_i마리, Bebe가 did_i마리가 있다. cic_i와 did_i는 모두 1 이상 1,000 이하이다. 즉, 모든 간선마다 Kaka와 Bebe가 한 마리씩은 있다. 으악!

현식이는 다음 조건을 만족하는 0번 정점에서 N−1N-1번 정점까지의 경로를 찾아 탈출구로 나가야 한다.

  1. 경로에 있는 Kaka의 총 마릿수와 Bebe의 총 마릿수는 각각 1,000을 넘어서는 안 된다.
  2. 해당 경로의 스트레스는 (Kaka의 총 마릿수)×(Bebe의 총 마릿수)로 정의된다. 1번을 만족하는 경로가 여러 개라면 그중 스트레스가 가장 적은 경로를 선택한다.

위 그림은 첫 번째 예시를 나타낸 것이다. 각 간선의 (a,b)(a, b)는 (ci,di)(c_i, d_i)를 나타낸다. 보다시피 0번과 3번을 잇는 간선을 지나면 어떤 형태로든 Kaka의 총 마릿수가 1,000을 넘어가므로 지나갈 수 없다. 가능한 경로 중 스트레스가 가장 적은 경로는 0번, 1번, 3번, 4번 순서로 지나가는 경로이고, 스트레스 값은 (1+2+1)×(1+2+7)=40(1+2+1)\times(1+2+7)=40이다.

위 그림은 두 번째 예시를 나타낸 것이다. 두 번째 예시에서는 어떤 경로로 가도 Kaka나 Bebe의 마릿수가 1,000을 넘어가므로 답이 존재하지 않는다. 따라서 -1을 출력한다.

입력

첫 번째 줄에 정점의 개수 NN과 간선의 개수 MM이 공백을 사이에 두고 주어진다. (2 ≤ NN ≤ 1,000, 1 ≤ MM ≤ 10,000)

두 번째 줄부터 M+1M+1번째 줄까지, (1+i)(1+i)번째 줄에 ii번 간선의 정보 aia_i, bib_i, cic_i, did_i가 공백을 사이에 두고 주어진다. 이는 aia_i번과 bib_i번 정점을 잇는 간선이 존재하며, 그 위에 Kaka가 cic_i마리, Bebe가 did_i마리 있다는 뜻이다. (0 ≤ ai,bi<Na_i, b_i < N, 1 ≤ ci,dic_i, d_i ≤ 20,000)

두 정점을 잇는 간선은 두 개 이상 존재하지 않는다.

출력

조건을 만족하는 경로의 스트레스 값 ((Kaka의 총 마릿수)×(Bebe의 총 마릿수))을 출력한다.

그러한 경로가 존재하지 않으면 -1을 출력한다.

힌트

첫 번째 예시에서 0번과 3번을 잇는 간선을 지나면 어떤 형태로든 Kaka의 총 마릿수가 1,000을 넘어가므로 지나갈 수 없다. 가능한 경로 중 스트레스가 가장 적은 경로는 0번, 1번, 3번, 4번 순서로 지나가는 경로이고, 스트레스 값은 (1+2+1)×(1+2+7)=40(1+2+1)\times(1+2+7)=40이다.

두 번째 예시에서는 어떤 경로로 가도 Kaka나 Bebe의 마릿수가 1,000을 넘어가므로 답이 존재하지 않는다. 따라서 -1을 출력한다.

예제2

  1. 예제 1

    입력
    5 7
    0 1 1 1
    0 3 1000 1
    1 2 1 5
    1 3 2 2
    2 3 1 1
    2 4 4 4
    3 4 1 7
    
    예상 출력
    40
    
  2. 예제 2

    입력
    4 5
    0 1 501 1
    0 2 1 501
    1 2 500 500
    1 3 501 1
    2 3 1 501
    
    예상 출력
    -1