#P2288. Islands and Bridges

    ID: 1288 传统题 2000ms 256MiB 尝试: 2 已通过: 1 难度: 10 上传者: 标签>Shanghai 2004状态压缩动态规划哈密顿路径最大价值路径计数

Islands and Bridges

题目描述

给定一个由岛屿和连接岛屿的桥梁组成的地图,哈密顿路径是指沿着桥梁访问每个岛屿恰好一次的路径。地图中每个岛屿都有一个正整数值。我们称一条哈密顿路径为最佳三角形哈密顿路径,当且仅当它能最大化以下描述的值:

假设存在nn个岛屿,哈密顿路径C1C2CnC_1C_2\ldots C_n的价值由三部分组成:

  1. 路径中每个岛屿的价值之和,即i=1nVi\sum_{i=1}^n V_i,其中ViV_i为岛屿CiC_i的价值。
  2. 对于路径中的每条边CiCi+1C_iC_{i+1},加上Vi×Vi+1V_i \times V_{i+1}的乘积。
  3. 当路径中连续三个岛屿CiCi+1Ci+2C_iC_{i+1}C_{i+2}在地图中构成三角形(即CiC_iCi+2C_{i+2}之间有桥梁)时,加上Vi×Vi+1×Vi+2V_i \times V_{i+1} \times V_{i+2}的乘积。

你需要找到价值最大的最佳三角形哈密顿路径,并统计其数量。注意,路径的逆序视为同一条路径。若不存在哈密顿路径,输出`0 0'。

输入格式

  • 第一行包含一个整数qqq20q \leq 20),表示测试用例数量。
  • 每个测试用例以两个整数nnmm开头,分别表示岛屿数和桥梁数。
  • 接下来一行包含nn个正整数,第ii个数为岛屿ii的价值ViV_iVi100V_i \leq 100)。
  • 后续mm行每行包含两个整数xxyy,表示岛屿xxyy之间有双向桥梁。岛屿编号从1到nn,且n13n \leq 13

输出格式

  • 对每个测试用例,输出一行两个整数,用空格分隔。第一个数是最佳三角形哈密顿路径的最大价值,第二个数是该价值的路径数量。若无哈密顿路径,输出'0 0'。

输入样例 1

2
3 3
2 2 2
1 2
2 3
3 1
4 6
1 2 3 4
1 2
1 3
1 4
2 3
2 4
3 4

输出样例 1

22 3
69 1

来源

上海2004年相关问题