#include <stdio.h>
#define MAX_LEVELS 30
#define MAX_PLANETS 31
#define MAX_PAY 1e7
int numOfLevels;
int minPay[MAX_LEVELS][MAX_PLANETS];
int main(){
scanf("%d", &numOfLevels);
int level;
for (level = 1; level <= numOfLevels; level++){
int preLevel = level - 1;
int numOfPlanets;
scanf("%d", &numOfPlanets);
int planet;
for (planet = 1; planet <= numOfPlanets; planet++){
minPay[level][planet] = MAX_PAY;
int from;
while (scanf("%d", &from) != EOF && from != 0){
int pay;
scanf("%d", &pay);
//每输入一个数据即刻DP
if (minPay[preLevel][from] + pay < minPay[level][planet])
minPay[level][planet] = minPay[preLevel][from] + pay;
}
}
//注意如何处理'*'的输入问题
char str[2];
if (level < numOfLevels)
scanf("%s", str);
else {
int result = MAX_PAY;
for (planet = 1; planet <= numOfPlanets; planet++)
if (minPay[level][planet] < result)
result = minPay[level][planet];
printf("%d\n", result);
}
}
return 0;
}
URAL 1210 Kind Spirits (DP动态规划)
最新推荐文章于 2016-08-23 11:40:23 发布