双重最短路
题号:NC21736
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

有一张n个点的无向图,标号为0到n-1,图中的每条边有两个权值,现在让你求出从0到1的最短路,最短路的定义是W1*W2,W1为路径上第一种权值的和,W2为路径上第二种权值的和,如果没有最短路,输出-1

输入描述:

第一行输入一个整数n (2 ≤ n ≤ 20)

接下来n行每行n个字符,第i行的第j个字符表示weight1[i][j]
再接下来n行每行n个字符,第i行的第j个字符表示weight2[i][j]

所有的字符要么是数字要么是'.'

第i行的第j个字符是数字表示ij两个点联通,且权值为这个数字
否则表示不联通

输出描述:

输出一个整数
示例1

输入

复制
4    	
..14
..94
19..
44..
..94
..14
91..
44..

输出

复制
64
示例2

输入

复制
4
..14
..14
11..
44..
..94
..94
99..
44..

输出

复制
36
示例3

输入

复制
6    
.....9
..9...
.9.9..
..9.9.
...9.9
9...9.
.....9
..9...
.9.9..
..9.9.
...9.9
9...9.

输出

复制
2025

备注:

子任务1:n <= 5
子任务2:n <= 10
子任务3:无限制