比赛 |
NOIP_5 |
评测结果 |
AAAWWWWWWW |
题目名称 |
Perform巡回演出 |
最终得分 |
30 |
用户昵称 |
BYVoid |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2008-09-24 22:18:16 |
显示代码纯文本
#include <iostream>
using namespace std;
typedef struct
{
int cnt;
int t[31];
}rec;
int p,l,i,j,n,k;
int F[1001][11];
rec cost[11][11];
int Result[1001];
void solve()
{
for (i=1;i<=n;i++)
{
if (cost[1][i].t[1])
F[1][i]=cost[1][i].t[1];
}
for (i=2;i<=k;i++)
{
for (j=1;j<=n;j++)
{
for (l=1;l<=n;l++)
{
if (j!=l && (cost[l][j].t[(i-1) % cost[l][j].cnt+1]) && ((F[i][j]==0) || (F[i-1][l]+cost[l][j].t[(i-1) % cost[l][j].cnt+1]<F[i][j])))
F[i][j]=F[i-1][l]+cost[l][j].t[(i-1) % cost[l][j].cnt+1];
}
}
}
Result[p]=F[k][n];
}
void init()
{
freopen("candy.in","r",stdin);
freopen("candy.out","w",stdout);
cin >> n >> k;
p=0;
while (n && k)
{
p++;
memset(cost,0,sizeof(cost));
memset(F,0,sizeof(F));
for (i=1;i<=n;i++)
{
for (j=1;j<=i-1;j++)
{
cin >> cost[i][j].cnt;
for (l=1;l<=cost[i][j].cnt;l++)
cin >> cost[i][j].t[l];
}
for (j=i+1;j<=n;j++)
{
cin >> cost[i][j].cnt;
for (l=1;l<=cost[i][j].cnt;l++)
cin >> cost[i][j].t[l];
}
}
solve();
cin >> n >> k;
}
}
int main()
{
init();
for (i=1;i<=p;i++)
{
cout << Result[i] << endl;
}
return 0;
}