记录编号 175592 评测结果 AAAAAAAAAA
题目名称 圣诞树 最终得分 100
用户昵称 Gravatar/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);
}