다른 길
시간 제한2초메모리 제한256 MB
가중치가 있는 무방향 다중 그래프에서 두 마을 사이 최단 경로의 개수를 10^9+9로 나눈 나머지를 구한다.
문제
키르가 사는 나라에는 마을이 개 있고, 1번부터 번까지 번호가 붙어 있다. 마을 사이에는 도로가 개 놓여 있으며, 모든 도로는 양방향으로 다닐 수 있다.
키르는 번 마을에서 번 마을까지 가려고 한다. 늘 같은 길로만 다니던 키르는 다른 길도 걸어 보고 싶어서, 번 마을에서 번 마을까지 가는 최단 경로가 서로 다른 것으로 몇 개나 되는지 궁금해졌다. 두 경로는 한쪽에서 지난 도로를 다른 쪽에서 지나지 않았을 때 서로 다르다. 도로는 한 개씩 구별하므로, 같은 두 마을을 잇는 도로가 여러 개 있으면 그중 어느 도로를 지났는지에 따라 경로가 달라진다.
최단 경로는 지나는 도로의 길이를 모두 더한 값이 가장 작은 경로를 말한다.
키르의 궁금증을 풀어 주자.
입력
첫째 줄에 , , , 가 공백 하나로 구분되어 주어진다. (, , , )
다음 개의 줄에 도로의 정보가 한 줄에 하나씩, , , 가 공백 하나로 구분되어 주어진다. 번 마을과 번 마을을 길이 의 도로가 양방향으로 잇는다는 뜻이다. (, )
같은 두 마을을 잇는 도로가 여러 개 주어질 수 있고, 인 도로도 주어질 수 있다.
출력
번 마을에서 번 마을까지 가는 최단 경로의 개수를 1000000009()로 나눈 나머지를 출력한다. 번 마을에서 번 마을로 가는 경로가 하나도 없으면 0을 출력한다.