식당들이 즐겨찾기 방향 그래프로 서로를 추천할 때, 각 단계의 가격이 추천한 식당이 현재 식당의 즐겨찾기인지에 따라 달라지는 상황에서 정확히 k개의 식당을 방문하는 최소 비용을 모든 k에 대해 구한다.
어려움8그래프동적 계획법최단 경로그리디아직 제출이 없습니다시간 제한3초메모리 제한128 MB루카의 도시에는 1번부터 N번까지 번호가 붙은 식당 N곳이 있고, 누구나 마음에 드는 식당을 찾을 수 있다. 식당 주인도 저마다 즐겨 찾는 식당이 있다. 식당 주인에게 추천을 부탁하면 주인은 자기 식당과 자신이 즐겨 찾는 식당을 추천하고, 그 식당 주인들이 추천할 식당도 모두 추천한다.
즉 식당 i의 주인이 추천하는 식당은 i 자신과, 즐겨 찾는 식당을 따라 한 번 이상 이동해서 도달할 수 있는 모든 식당이다.
아래 표는 식당이 네 곳인 예시이다.
| 식당 주인 | 즐겨 찾는 식당 | 추천하는 식당 |
|---|---|---|
| 1 | 2 | 1, 2, 3, 4 |
| 2 | 3 | 2, 3, 4 |
| 3 | 2, 4 | 2, 3, 4 |
| 4 | 없음 | 4 |
루카는 다음 방법으로 식당 몇 곳을 방문하려 한다.
식당 A의 대표 메뉴 가격은 XA와 YA 두 가지이다. 루카가 식당에 들어가면 주인은 누가 이 식당을 추천했는지 묻는다. 추천한 사람이 식당 B의 주인이라면 루카가 내는 금액은 다음과 같다.
이 방법으로 방문할 수 있는 식당 수의 최댓값을 K라고 하자. 1 이상 K 이하의 모든 k에 대해, 루카가 식당을 정확히 k곳 방문하려면 최소 몇 쿠나가 필요한지 구하시오.
첫째 줄에 식당의 수 N이 주어진다. (1≤N≤1000)
다음 N개 줄에는 각각 정수 여러 개가 주어진다.
i번째 줄의 처음 두 수는 식당 i의 대표 메뉴 가격 Xi, Yi이다. (1≤Xi,Yi≤10000) 세 번째 수 Oi는 식당 i의 주인이 즐겨 찾는 식당의 수이다. (0≤Oi<N) 나머지 Oi개 수는 즐겨 찾는 식당의 번호이며, 이 번호는 서로 다르고 i와 같은 번호는 없다.
루카가 방문할 수 있는 식당 수의 최댓값이 K일 때 K개 줄을 출력한다. k번째 줄에는 루카가 식당을 정확히 k곳 방문할 때 내야 하는 금액의 최솟값을 쿠나 단위로 출력한다.
첫 번째 예제에서 식당 한 곳을 가장 싸게 방문하는 방법은 식당 1(200쿠나)을 방문하는 것이다.
식당 두 곳을 가장 싸게 방문하려면 식당 3(250쿠나)을 방문한 뒤 식당 2(200쿠나)를 방문한다.
식당 세 곳을 가장 싸게 방문하려면 식당 1(200쿠나), 식당 3(250쿠나), 식당 2(200쿠나) 순서로 방문한다.
식당 네 곳을 가장 싸게 방문하려면 식당 1(200쿠나), 식당 3(250쿠나), 식당 2(200쿠나), 식당 4(300쿠나) 순서로 방문한다.