zstu 2531 去北京看奥运

被数组大小坑到了。。
没啥好说的。。

#include<stdio.h>
#include<string.h>
int min(int g,int h)
{
    return g>h?h:g;
}
struct ways
{
    int start;
    int end;
    int gas;
}way[50][100];
int station[50];
int many[50];
int dp[50][20];
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int n;
        scanf("%d",&n);
        for(int i=2;i<=n+1;i++)
        {
            scanf("%d",&station[i]);
        }
        station[1]=1;
        station[n+2]=1;
        for(int i=1;i<=n+1;i++)
        {
            int cin=1;
            while(1)
            {
                scanf("%d",&way[i][cin].start);
                if(way[i][cin].start==0)
                {
                    many[i]=cin-1;
                    break;
                }
                scanf("%d%d",&way[i][cin].end,&way[i][cin].gas);
                cin++;
            }
        }
        memset(dp,0x3f3f3f3f,sizeof(dp));
        dp[1][1]=0;
        for(int i=2;i<=n+2;i++)
        {
            for(int j=1;j<=station[i];j++)
            {
                for(int k=1;k<=station[i-1];k++)
                    for(int t=1;t<=many[i-1];t++)
                        if(way[i-1][t].start==k&&way[i-1][t].end==j)
                            dp[i][j]=min(dp[i][j],dp[i-1][k]+way[i-1][t].gas);
            }
        }
        printf("%d\n",dp[n+2][1]);
    }
    return 0;
}

你可能感兴趣的:(dp-zstu)