送外卖
描述
仙林校区内开了一家新的轻食店!为了保证运送效率,他们决定雇佣计算机系的同学来送外卖。
仙林校区一共有栋宿舍楼(编号至),宿舍楼之间有道路相连。为了叙述的方便,我们认为轻食店在号宿舍楼。从号宿舍楼到号宿舍楼的最短路线需要骑分钟的电动车。值得一提的是,某些道路是上坡,某些道路是下坡,所以并不一定等于。
你目前在轻食店(0号宿舍楼),电动车上的外卖箱中有一些外卖,你需要规划一条时间最短的路线把外卖送完。由于轻食店的食物很好(jian)吃(fei),所以订外卖的学生老早就在楼下等着了。当你到达一个宿舍楼之后,可以立即把所有该宿舍楼的外卖交付,交付的时间忽略不计。换言之,你送外卖的总用时等于你花在路上的时间之和。送完最后一份外卖后计时立刻停止,返回店铺的时间不计入总用时。
请输出最短的总用时和对应的路线。
输入输出格式
输入
第一行包括一个整数。
第二行包括个取值为或的整数。第个整数为1表示你的电动车外卖箱中有第栋宿舍楼的外卖,反之没有。数据保证本行至少有一个1。
接下来的行,每行含有个数,表示(注意编号从开始)。对于对角线上的元素(即),数值为零。这些数字在本题中没有意义。
输出
第一行输出一个整数,表示最短的总用时。
第二行输出若干整数(宿舍编号),表示送外卖的顺序。请注意,在本行输出整数的个数,应该等于输入数据的第二行中“”的个数。
数据规模与说明
, .
如果有多条用时最少的路线,请输出字典序最大的那一条。即在用时最少的情况下,路线中第一个宿舍楼的编号尽可能大;在用时最少且第一个宿舍楼编号一样大的情况下,第二个宿舍楼的编号尽可能大,以此类推。
考虑到部分同学对最短路算法不熟悉,给定的已经是最短路径了。你不可能通过经由第三个宿舍楼构造出一条用时少于的路径。换言之,给定的矩阵满足三角不等式。
输入输出样例
输入
输出
来源
参照CodeVS 2800
信息
- 难度
- 9
- 分类
- (无)
- 标签
- (无)
- 递交数
- 11
- 已通过
- 2
- 通过率
- 18%
- 上传者