每年,FJ 都喜欢去赶集,集市上有 n 个展位,每个摊位 i 都会在当天的特定时间 p_i 发放精美的礼品。FJ 已经听说了这一点,他希望能收集尽可能多的礼品和他的奶牛们一起分享。要想获得摊位 i 发放的礼品,FJ 必须确保时间点 p_i 时位于摊位 i。
为了获得尽可能多的礼品,FJ 进行了一番详细的调查,通过调查FJ确定了从摊位 i 到摊位 j 所花费的时间 ti,j。集市的布局很不寻常,这会导致,FJ如果在从 i 到 j 的过程中选择从其他摊位绕行,可能会比直接从 i 到 j 所花费的时间更少,然而我们耿直的 FJ 从来不这么做,如果他想从摊位 i 到摊位 j,他一定会花 ti,j 的时间从 i 走到 j。另外由于集市所在地崎岖不平,所以 ti,j 可能与 tj,i 不相同。
FJ 在时间 0 时,位于 1 号摊位,请计算他最多可以收集多少奖品。
第 1 行:一个整数 n,表示摊位的数量。
第 2 行:共 n 个整数,其中第 i 个正数 p_i 表示摊位 i 发放礼品的时间。
第 n+2 到第 n^2+n+1 行:共 n^2 行,第一个 n 行描述了 FJ 从摊位 1 走到到摊位 1...n 所需时间(t1,1,t1,2, ...t1,n),接下来的 n 行描述了 FJ 从摊位 2 走到摊位 1...n 所需时间(t2,1,t2,2, ...t2,n),以此类推,最后的 n 行描述了 FJ 从摊位 n 走到摊位 1...n 所需要的时间 tn,1,tn,2, ...tn,n。对于任意摊位 i,ti,i=0。
一行:一个整数,表示 FJ 最多可以领取到的奖品数量。
4 13 9 19 3 0 10 20 3 4 0 11 2 1 15 0 12 5 5 13 0
3
样例中集市上共有 4 个摊位。1 号摊位在时间 13 发放礼品,2 号摊位在时间 9 发放礼品,3 号摊位在时间 19 发放礼品,4 号摊位在时间 3 发放礼品。
FJ 首先从 1 号摊位走到 4 号摊位,用时 3,并在时间 3 到达,正好可以领取到奖品,接着他从摊位 4 走到摊位 2 ,用时 5,并在时间 8 到达,在等待 1 个时间点后可以领取 2 号摊位的礼品,接着他从 2 号摊位走到 1 号摊位,用时 4,并在时间 13 到达,从而可以收集到第 3 个礼品。
对于 100\% 的数据,1\le n\le 400,0 \le $pi\le 10^9,1 \le t i,j$\le 10^6。
奇遇编程