记录编号 410127 评测结果 AAAAAAAAAA
题目名称 125.Perform巡回演出 最终得分 100
用户昵称 BaDBoY 是否通过 通过
代码语言 C++ 运行时间 0.003 s
提交时间 2017-05-31 08:30:42 内存使用 0.37 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<ctime>
using namespace std;
inline int read(){
  int s=0,f=1; char ch=getchar();
  while(ch>'9'||ch<'0'){if(f=='-')f=-1; ch=getchar();}
  while(ch>='0'&&ch<='9'){s=(s<<1)+(s<<3)+ch-'0'; ch=getchar();} 
  return s*f;
}
int n,tim,val[11][11][31],f[1001][11];
int main(){
   freopen("candy.in","r",stdin);
   freopen("candy.out","w",stdout);
   while(~scanf("%d%d",&n,&tim)){
    if(!n&&!tim)  break;
    memset(f,0x3f,sizeof(f));
    memset(val,0,sizeof(val));
    for(int i=1;i<=n;i++)
     for(int j=1;j<=n;j++){
      if(i==j)  continue;
      val[i][j][0]=read();
      for(int k=1;k<=val[i][j][0];k++)
       val[i][j][k]=read();  
     }
    /*for(int i=1;i<=n;i++)
     for(int j=1;j<=n;j++)
      for(int k=1;k<=val[i][j][0];k++)
       cout<<"i="<<i<<" "<<"j="<<j<<" "<<"k="<<k<<" "<<val[i][j][k]<<endl;*/ 
    f[0][1]=0;
    for(int i=0;i<tim;i++)
     for(int j=1;j<=n;j++)
      if(f[i][j]!=1061109567)
       for(int k=1;k<=n;k++){
        if(j==k) continue;
        int temp=(i%val[j][k][0])+1;
        if(!val[j][k][temp]) continue;
        f[i+1][k]=min(f[i+1][k],f[i][j]+val[j][k][temp]);
       }
    if(f[tim][n]==1061109567)
     printf("  %d\n",0);
    else 
     printf("  %d\n",f[tim][n]);  
   }
   //cout<<clock();
   //while(1);
   return 0;
}