B. 寻宝

内存限制:256 MiB 时间限制:1000 ms 输入文件:trea.in 输出文件:trea.out
题目类型:传统 评测方式:文本比较

题目描述

在一个神秘的遗迹中,有N个房间,每个房间中藏有一定数量的宝藏。藏宝图中画出了房间之间的连接路径,可以从任一处开始寻宝,然后可以沿着指定的连接继续寻宝(仅能从编号小的房间到编号大的房间),当无连接时寻宝工作结束。设计一个寻宝的方案,使能找到最多的宝藏。

输入格式

第1行只有一个数字,表示房间的个数N(N<=20)。
第2行有N个数,分别表示每个房间中的宝藏个数。
第3行至第N+1行表示房间之间的连接情况(0表示没有路径,1表示有路径):
第3行有N-1个数(0或1),表示第一个房间至第2个、第3个、…、第N个房间是否有路径连接。如第3行为1100...0,则表示第一个房间至第二个房间有路径,至第三个房间有路径,至第四个房间、第五个、…、第N个房间没有路径。
第4行有N-2个数,表示第二个房间至第3个、第4个、…、第N个房间是否有路径连接。
……
第N+1行有1个数,表示第N-1个房间至第N个房间是否有路径连接。

输出格式

第一行表示寻得最多宝藏时的寻宝顺序,各房间序号间以一个空格分隔。
第二行只有一个数,表示能寻得的最多宝藏数。

样例

【输入样例】
5
10 8 4 7 6
1 1 1 0
0 0 0
1 1
1
【输出样例】
1 3 4 5
27

数据范围与提示

N<=20