记录编号 |
175592 |
评测结果 |
AAAAAAAAAA |
题目名称 |
圣诞树 |
最终得分 |
100 |
用户昵称 |
/k |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.008 s |
提交时间 |
2015-08-06 14:46:11 |
内存使用 |
0.32 MiB |
显示代码纯文本
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int n;
char s[200];
int a[110],f[110];
bool b[110][110];
int tt;
int main()
{
freopen("treez.in","r",stdin);
freopen("treez.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
f[i]=a[i];
//printf("%d\n",i);
if(i==n)
break;
gets(s);
int u=strlen(s);
for(int y=1;y<=u;y++)
{
if(s[y]>='0'&&s[y]<='9')
{
if(s[y+1]<'0'||s[y+1]>'9')
{
int o=s[y]-'0';
b[i][o]=b[o][i]=1;
continue;
}
if(s[y+1]>='0'&&s[y+1]<='9'&&s[y+2]>='0'&&s[y+2]<='9')
{
int o=(s[y]-'0')*100+(s[y+1]-'0')*10+s[y+2]-'0';
b[i][o]=b[o][i]=1;
y=y+2;
continue;
}
int o=(s[y]-'0')*10+s[y+1]-'0';
b[i][o]=b[o][i]=1;
y=y+1;
}
}
}
f[1]=a[1];
for(int i=2;i<=n;i++)
for(int y=1;y<i;y++)
{ if(b[i][y]&&f[i]<f[y]+a[i])
{
f[i]=f[y]+a[i];
}
if(tt<f[i])
tt=f[i];
}
printf("%d",tt);
}