가장 긴 최단 경로

각 간선에 길이와 단위 가격이 주어진 방향 그래프에서 예산 P 이하로 간선을 늘려 s에서 t까지 최단 경로 길이를 최대화한다.

어려움8최단 경로이분 탐색그래프아직 제출이 없습니다시간 제한10초메모리 제한512 MB

문제

방향 그래프와 두 정점 ss, tt가 주어진다. 같은 정점 쌍 사이에 간선이 여러 개 있을 수 있지만, 자기 자신으로 돌아오는 간선은 없다.

각 간선 ee에는 처음 길이 ded_e와 단가 cec_e가 정해져 있다. 비용 xcex \cdot c_e를 내면 간선 ee의 길이를 ded_e에서 de+xd_e + x로 늘릴 수 있다. xx는 0 이상의 실수이고 정수가 아니어도 된다. 간선의 길이를 줄일 수는 없다.

총비용이 PP를 넘지 않도록 몇몇 간선을 늘려서, ss에서 tt까지 가는 최단 경로의 길이를 최대로 만들어라. ss에서 tt로 가는 경로는 적어도 하나 있다.

입력

입력은 테스트 케이스 하나로 이루어지고, 형식은 다음과 같다.

N M P s t
v1 u1 d1 c1
...
vM uM dM cM

첫 줄에 정수 다섯 개 NN, MM, PP, ss, tt가 주어진다. NN (2N2002 \le N \le 200)은 정점 수, MM (1M20001 \le M \le 2000)은 간선 수, PP (0P1060 \le P \le 10^6)는 쓸 수 있는 비용의 한도이며, sstt (1s,tN1 \le s, t \le N, sts \ne t)는 각각 경로의 시작 정점과 끝 정점이다.

이어지는 MM개의 줄에는 정수 네 개 viv_i, uiu_i, did_i, cic_i가 주어진다. viv_i에서 uiu_i로 가는 간선이 있다는 뜻이고 (1vi,uiN1 \le v_i, u_i \le N, viuiv_i \ne u_i), 그 간선의 처음 길이는 did_i (1di101 \le d_i \le 10), 단가는 cic_i (1ci101 \le c_i \le 10)이다.

출력

비용 PP 안에서 간선을 늘려 만들 수 있는 ss에서 tt까지 최단 경로 길이의 최댓값을 한 줄에 출력한다.

소수점 아래 여덟째 자리에서 반올림하여 소수점 아래 일곱째 자리까지 출력하고, 모자란 자리는 0으로 채운다. 정확히 중간인 값은 올림한다.