두 가중치
면접 대비시간 제한2초메모리 제한512 MB
각 간선에 두 가중치가 있는 무방향 그래프에서 0번에서 1번으로 가는 경로 중 두 가중치 합의 곱을 최소로 하는 경로를 찾는다.
문제
정점이 개인 그래프 가 있다. 정점에는 0번부터 번까지 번호가 매겨져 있다.
의 모든 간선에는 가중치가 두 개씩 붙어 있고, 각각을 가중치 1, 가중치 2라고 한다.
경로의 비용은 경로에 있는 간선의 가중치 1을 모두 더한 값 과 가중치 2를 모두 더한 값 를 곱한 이다. 0번 정점에서 1번 정점으로 가는 경로 중 비용이 가장 작은 경로를 찾는 프로그램을 작성하시오.
입력
첫째 줄에 정점의 수 이 주어진다. ()
다음 개 줄에는 가중치 1의 정보가, 그다음 개 줄에는 가중치 2의 정보가 주어진다. 각 줄은 길이가 인 문자열이다.
한 블록에서 번째 줄의 번째 문자는 정점 와 정점 를 잇는 간선의 가중치이며, 1부터 9까지의 숫자 또는 .이다. 문자가 .이면 두 정점 사이에 간선이 없다. 줄과 문자는 모두 0번부터 센다.
가중치 1의 정보를 weight1, 가중치 2의 정보를 weight2라고 하면 다음이 성립한다.
weight1[i][i]=weight2[i][i]=.weight1[i][j]=weight1[j][i]weight2[i][j]=weight2[j][i]weight1[i][j]가.이면weight2[i][j]도.이고, 그 역도 성립한다.
출력
첫째 줄에 0번 정점에서 1번 정점으로 가는 경로의 비용 중 최솟값을 출력한다. 0번 정점에서 1번 정점으로 갈 수 없으면 -1을 출력한다.