만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

수족관

시간 제한3초메모리 제한256 MB

요약
R행 C열 격자의 대각선 벽을 가장 적은 비용으로 허물어 전체를 하나의 구역으로 만듭니다.
난이도

보통10점 중 7점

유형
최소 신장 트리, 유니온 파인드, 그래프
정답자
아직 제출이 없습니다

문제

수족관을 RR행 CC열 격자로 나누고, 칸마다 대각선 벽을 하나씩 끼워 넣었다. 벽은 칸의 왼쪽 아래 모서리와 오른쪽 위 모서리를 잇거나(/), 왼쪽 위 모서리와 오른쪽 아래 모서리를 잇는다(\). 수족관 바깥 테두리는 유리라서 치울 수 없다.

이 벽들이 수족관 내부를 여러 구역으로 나눈다. 벽을 넘지 않고 헤엄쳐 오갈 수 있는 두 지점은 같은 구역에 있다. 두 벽이 한 점에서만 맞닿아도 그 점으로는 지나가지 못한다.

칸마다 그 안에 있는 벽의 강도가 정해져 있고, 벽 하나를 통째로 허무는 데 강도만큼의 힘이 든다. 물고기들이 수족관 내부를 하나의 구역으로 합치려면 힘이 최소 얼마나 필요한지 구하라.

아래 그림은 2×22 \times 2 수족관의 예다. 구역이 네 개이고, 강도가 7, 9, 12인 벽 세 개를 허물면 전체가 한 구역이 된다. 28보다 적은 힘으로는 합칠 수 없다.

2 x 2 수족관의 예

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. (1≤T≤201 \le T \le 20)

각 테스트 케이스의 첫 줄에는 행의 수 RR과 열의 수 CC가 주어진다. (1≤R,C≤1001 \le R, C \le 100)

이어지는 RR개 줄에는 벽의 방향이 주어진다. 각 줄은 공백 없는 CC개의 문자로 이루어지고, 각 문자는 / 또는 \이다.

그다음 RR개 줄에는 각각 CC개의 정수가 주어진다. 이 값은 대응하는 칸에 있는 벽의 강도이며, 1 이상 10000 이하다.

출력

각 테스트 케이스마다 Case x: y 꼴로 한 줄씩 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, yy는 수족관 내부를 하나의 구역으로 합치는 데 필요한 힘의 최솟값이다.

예제2

  1. 예제 1

    입력
    2
    2 2
    \/
    \\
    7 10
    12 9
    1 3
    /\\
    3 4 5
    
    예상 출력
    Case 1: 28
    Case 2: 12
    
  2. 예제 2

    입력
    1
    1 1
    /
    10000
    
    예상 출력
    Case 1: 10000