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