#1545. Islands and Bridges

Islands and Bridges

Description

给定一些岛屿和一些连接岛屿的桥梁,大家都知道汉密尔顿路是访问每个岛屿一次的路线,在我们这个地图中,每个岛屿有个正整数的权值,表示这个岛屿的观赏价值。假设一共有N个岛屿,用Vi表示岛屿Ci的价值,汉密尔顿路C1C2....Cn的价值是以下三部分的总和:

(1)所有岛屿的价值之和;

(2)对于路径中相邻的两个岛屿CiCi+1,把两个岛屿的价值之积加到总价值中;

(3)路径中连续三个岛屿CiCi+1Ci+2,如果Ci与Ci+2有桥直接相连,则把这三个岛屿价值之积加到总价值中。

要求计算汉密尔顿路最大的价值以及方案数 Input

输入第一行是一个整数Q(Q<=20),表示测试数据的数量。每个测试数据第一行输入两个整数N和M,分别表示岛屿数和桥梁数,接下来一行包含N个正整数,第i个数表示Vi,每个数不超过100,最后M行,每行两个数X,Y,表示岛X和岛Y之间有一座桥直接相连,桥是双向的,岛屿编号为1到N(N<=13) Output

对于每个测试数据,输出一行,两个整数,第一个数表示最大价值,第二个数表示方案数,如果不存在汉密尔顿路径,输出“0 0”。

注意:一条路径可以反着走,我们认为这两条路径是同一条路径。 Sample Input

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

Sample Output

22 3

69 1