被数组大小坑到了。。
没啥好说的。。
#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;
}