Bovinia 항공사는 소들이 살고 있는 N개의 우리들을 연결할 계획을 짜고 있다. (1 <= N <= 200) 어느 항공로 안에는, K개의 농장들이 중심지로 선택된다. (1 <= K <= 100) 편의상 농장들을 1부터 N까지, 그 중의 중심지들은 1부터 K까지 번호로 부르자.
현재 농장들을 연결하는 M개의 단방향 항공로가 있다. (1 <= M <= 10,000) i번째 비행은 Ui 농장에서 Vi 농장으로 가고 비용은 Di이다. (1 <= Di <= 1,000,000)
이 항공사는 최근 Q개의 여행 요청이 들어왔다. (1 <= Q <= 10,000) i번째 여행은 Ai에서 Bi로 가는 것이다. Ai와 Bi를 가는 다양한 경로들이 존재하겠지만, (아마도 같은 농장을 여러번 방문할지라도) 하지만 적어도 한 개의 중심지를 포함해야만 한다. 이 요구조건이 만족되지 않는 Ai와 Bi가 있을수도 있다.
모든 여행의 요청을 받으면, 당신은 유효한 경로의 수와 해당 경로의 최소 비용을 구하면 된다.
입출력 예 2 입력 3 5 1 3 3 1 10 2 3 7 3 2 7 1 3 10 1 2 7 3 2 2 3 1 2 출력 2 24
Currently there are M (1 <= M <= 10,000) one-way flights connecting these farms. Flight i travels from farm u_i to farm v_i, and costs d_i dollars (1 <= d_i <= 1,000,000).
The airline recently received a request for Q (1 <= Q <= 10,000) one-way trips. The ith trip is from farm a_i to farm b_i. In order to get from a_i to b_i, the trip may include any sequence of direct flights (possibly even visiting the same farm multiple times), but it must include at least one hub (which may or may not be be the start or the destination). This requirement may result in there being no valid route from a_i to b_i. For all other trip requests, however, your goal is to help Air Bovinia determine the minimum cost of a valid route.
입력 3 3 1 3 3 1 10 1 3 10 1 2 7 3 2 2 3 1 2 출력 2 24
INPUT DETAILS: There are three farms (numbered 1..3); farm 1 is a hub. There is a $10 flight from farm 3 to farm 1, and so on. We wish to look for trips from farm 3 to farm 2, from 2->3, and from 1->2. OUTPUT DETAILS: The trip from 3->2 has only one possible route, of cost 10+7. The trip from 2->3 has no valid route, since there is no flight leaving farm 2. The trip from 1->2 has only one valid route again, of cost 7.
출처:usaco/2013/dec/silver 번역:Fate