记录编号 166852 评测结果 AAAAAAAAAA
题目名称 Perform巡回演出 最终得分 100
用户昵称 Gravatar0 是否通过 通过
代码语言 C++ 运行时间 0.010 s
提交时间 2015-06-16 14:56:47 内存使用 1.21 MiB
显示代码纯文本
#include <cstdio>
#include <cstring>

#define MAXN 1001UL

#define READ

#define Min(a,b) ((a)<(b)?(a):(b))

using namespace std;

int n,k;

int a[15][15][MAXN];
int f[MAXN][15];

void work(){
	memset(f,0,sizeof(f));
	memset(a,0,sizeof(a));
	int t;
	int i,j,d;
	for(i=1;i<=n;++i)
		for(j=1;j<=n;++j){
			if(i==j)
				continue;
			scanf("%d",&t);
			for(d=1;d<=t;++d)
				scanf("%d",&a[i][j][d]);
			for(d=t+1;d<=k;++d)
				a[i][j][d]=a[i][j][d-t];		
		}
	for(i=2;i<=n;++i)
		f[1][i]=a[1][i][1];
	for(i=2;i<=k;++i)
		for(j=1;j<=n;++j){
			f[i][j]=0x3fffffff;
			for(d=1;d<=n;++d){
				if(a[d][j][i]==0)
					continue;
				if(f[i-1][d]!=0)
					f[i][j]=Min(f[i][j],f[i-1][d]+a[d][j][i]);
				}
				if(f[i][j]==0||f[i][j]==0x3fffffff){
					printf("0\n");
					return ;
				}
		}		
		printf("%d\n",f[k][n]);
}

int main(){
	
	#ifdef READ
		freopen("candy.in","r",stdin);
		freopen("candy.out","w",stdout);
	#endif
	
	int i,j;
	while(scanf("%d%d",&n,&k)==2&&n&&k)
		work();
}