去北京看奥运

Description
2008年将到,王飞同学化了九牛二虎之力搞到了2张2008年奥运会足球赛决赛的门票。真是开心啊!他爸爸准备开车跟他一起去北京看球赛。不过门票费好贵啊,所以他爸爸说了,这个钱要在下学期的生活费里扣(好抠门),不过如果他能让从杭州去北京的油费最省(油价最近涨的好厉害啊),那么就不扣生活费了。哈哈,这个就难不倒他了。在ACM里可不是白混的。很快他算出了汽车从杭州到北京必须要加几次油,并查出了到北京要经过哪几个城市,每个城市有哪些加油站以及从某城市各加油站到另一城市各加油站的距离和路况算出了各加油站之间的耗油量。下面是不是很easy?
在这里插入图片描述

Input
有多个测试案例。第一行先输入测试案例的数目T。对于每个测试案例,第一行输入一个整数n表示将在中途n(0 < n < 40)个城市中加油,后面紧跟着是n个整数代表每个城市有几个加油站(每个城市加油站不超过10个)。以下n+1行,每行由3个Si,Ej,L一组组成的好几对整数,该行以0结束。表示从前一城市Si第i个加油站(杭州的话就是家拉)出发到该城市第j个加油站消耗的油量为L升。

Output
对于每个测试,输出一行,内容为最小总耗油量。

Sample Input
1
2 2 3
1 1 3 1 2 1 0
1 1 2 1 2 7 2 1 8 2 2 9 2 3 4 0
1 1 5 2 1 6 3 1 6 0

Sample Output
10

#include <stdio.h>
#include <algorithm>
using namespace std;
#define maxn 99999
int a[42][12];//第几个城市,第几个加油站,值为油
int main(){
   int t;
   scanf("%d", &t);
   while(t--){
    int n, m, x, y, b;
    scanf("%d", &n);
    for(int i=1;i<=n;i++){
       scanf("%d", &m);
       for(int j=1;j<=m;j++)
       a[i][j] = maxn;
    }

    a[n+1][1]=maxn;

    for(int i=1;i<=n+1;i++){
          //  printf("1\n");
         while(scanf("%d", &b)&&b){
            scanf("%d %d", &x, &y);
            a[i][x]=min(a[i-1][b]+y,a[i][x]);
          }
    }
    printf("%d\n",a[n+1][1]);
   }
   return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值