각 간선에 길이와 단위 가격이 주어진 방향 그래프에서 예산 P 이하로 간선을 늘려 s에서 t까지 최단 경로 길이를 최대화한다.
어려움8최단 경로이분 탐색그래프아직 제출이 없습니다시간 제한10초메모리 제한512 MB방향 그래프와 두 정점 s, t가 주어진다. 같은 정점 쌍 사이에 간선이 여러 개 있을 수 있지만, 자기 자신으로 돌아오는 간선은 없다.
각 간선 e에는 처음 길이 de와 단가 ce가 정해져 있다. 비용 x⋅ce를 내면 간선 e의 길이를 de에서 de+x로 늘릴 수 있다. x는 0 이상의 실수이고 정수가 아니어도 된다. 간선의 길이를 줄일 수는 없다.
총비용이 P를 넘지 않도록 몇몇 간선을 늘려서, s에서 t까지 가는 최단 경로의 길이를 최대로 만들어라. s에서 t로 가는 경로는 적어도 하나 있다.
입력은 테스트 케이스 하나로 이루어지고, 형식은 다음과 같다.
N M P s t
v1 u1 d1 c1
...
vM uM dM cM
첫 줄에 정수 다섯 개 N, M, P, s, t가 주어진다. N (2≤N≤200)은 정점 수, M (1≤M≤2000)은 간선 수, P (0≤P≤106)는 쓸 수 있는 비용의 한도이며, s와 t (1≤s,t≤N, s=t)는 각각 경로의 시작 정점과 끝 정점이다.
이어지는 M개의 줄에는 정수 네 개 vi, ui, di, ci가 주어진다. vi에서 ui로 가는 간선이 있다는 뜻이고 (1≤vi,ui≤N, vi=ui), 그 간선의 처음 길이는 di (1≤di≤10), 단가는 ci (1≤ci≤10)이다.
비용 P 안에서 간선을 늘려 만들 수 있는 s에서 t까지 최단 경로 길이의 최댓값을 한 줄에 출력한다.
소수점 아래 여덟째 자리에서 반올림하여 소수점 아래 일곱째 자리까지 출력하고, 모자란 자리는 0으로 채운다. 정확히 중간인 값은 올림한다.