#P1006. 金矿

    ID: 7 传统题 1000ms 512MiB 尝试: 0 已通过: 0难度: 普及 ← 上一题 下一题 → 随机一题 上传者: 标签 动态规划 动态规划 DP 线性 DP 图结构 图论 搜索 记忆化搜索 深度优先搜索 DFS 拓扑排序
显示设置

金矿

题目描述

小W非常喜欢挖金矿,因为这会使他money+=inf;

这天,他获得了一张藏宝图。

已知藏宝图上标有若干个排成一条直线的金矿,每个矿里有一定数量的金子,如下表所示。

每个矿中都有一张说明书,说明在挖完此矿的金子后还可继续挖哪些矿,如下图所示。

挖矿规则为可以从任何一个矿开始,到任何一个矿结束,同时挖完这个矿中的金子之后,可以选择它可继续挖的矿之一继续挖,但只能选择一条。如上图中,挖完 11 矿后,可挖 22 矿,再挖 55 矿,66 矿,……

但只可以向右挖,不能回头向左挖。

小W想要尽可能多的金子,于是他问你:如何挖才能挖出最多的金子?

输入格式

输入共 n+2n+2 行。

第一行为一个整数 nn,表示有 nn 个矿。

第二行为 nn 个整数,表示这 nn 个矿的金子数,其中第 ii 个数的金子数为 aia_i。

接下来 nn 行,第 ii 行描述编号为 ii 的矿(因此这 nn 行的首个数字依次为 1,2,…,n1, 2, \ldots, n)。每行第一个数字是该矿的编号,后面跟着若干个数字,表示挖完该矿之后还可以继续挖的矿的编号。

注意:由于只能向右挖,每行后面列出的编号中,只有大于该矿编号的才是合法后继;小于该矿编号的编号是干扰项,请忽略它们。

输出格式

最多挖出的金子数。

输入输出样例 #1

输入 #1

3
1 1 1
1 2 3
2 3
3

输出 #1

3

说明

数据范围

  • 对于 20%20\% 的数据,1≤n≤201 \le n \le 20。
  • 对于 50%50\% 的数据,1≤n≤1001 \le n \le 100。
  • 对于 100%100\% 的数据,1≤n≤10001 \le n \le 1000,1≤ai≤1091 \le a_i \le 10^9。