MST 카메라
시간 제한7초메모리 제한512 MB
R행 C열 격자의 가중치 간선 가운데 질의로 주어진 부분 행렬 안의 간선만으로 N개 정점의 최소 신장 트리 가중치 합을 구하고, 트리가 없으면 -1을 출력합니다.
문제
최근 팀 대회에서 우리 팀이 최우수상을 받았고, 상품은 카메라였다. 평범한 카메라가 아니다. 제조사 "MST"는 이 카메라에 특별한 기능이 있다고 주장한다. 무방향 그래프의 간선 집합을 카메라로 찍으면, 그 간선으로 트리를 만들 수 있는지 판정한다. 간선에 가중치가 있으면 간선 가중치의 합이 최소인 트리도 찾는다. 행 열의 행렬이 있고, 그래프의 노드는 개다. 행렬의 칸마다 무방향 간선이 하나씩 있다. 이 간선은 노드 와 를 잇고, 가중치는 다. 쿼리는 부분 행렬로 주어진다. 각 쿼리마다 노드 개와 부분 행렬 안의 간선으로 그래프를 만든다. 이 그래프에 최소 신장 트리가 존재하면 간선 가중치의 합을 출력하고, 존재하지 않으면 "-1"을 출력한다. 모든 쿼리는 을 만족한다.
입력
첫 줄에 , , , 가 주어진다(, , ). 이어지는 개의 줄은 행렬을 나타낸다. 번째 줄에는 순서로 개의 수가 있다(). 마지막 개의 줄에는 각각 쿼리 가 있다(, ). 부분 행렬의 왼쪽 위 모서리는 이고, 오른쪽 아래 모서리는 다.
출력
개의 줄을 출력한다. 번째 줄에는 번째 쿼리의 답을 출력한다. 최소 신장 트리가 존재하면 간선 가중치의 합을, 존재하지 않으면 "-1"을 출력한다.