아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

인쇄 회로

시간 제한1초메모리 제한128 MB

요약
격자에 일부 세로선과 가로선이 주어질 때, 세로 비용 1과 가로 비용 2로 모든 노드를 연결하도록 선을 추가하고, 그 개수와 총비용을 출력한다.
난이도

보통10점 중 6점

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

문제

인쇄 회로(printed circuit) 는 노드(node) 와, 노드 쌍을 잇는 배선(wire segment) 으로 이루어진 기판이다. 이 문제에서 노드는 직사각형 격자 형태로 배열되며, 모든 배선은 인접한 두 노드를 세로 또는 가로로만 연결한다. 임의의 두 노드가 배선의 연쇄로 이어져 있으면 그 회로는 연결되어 있다(connected) 고 한다.

일부 인접한 노드들이 이미 배선으로 연결된 회로가 주어진다. 전체 회로가 연결되도록 새로운 배선을 추가해야 한다. 새 세로 배선의 비용은 11, 새 가로 배선의 비용은 22이다.

그림 1그림 2

최소 비용으로 회로를 완성하는 프로그램을 작성하여 다음 두 값을 구하라.

  1. 최소 비용 완성에 사용된 새 배선의 개수 KK.
  2. 그 완성의 총 비용 VV.

입력

첫 줄에 두 정수 NN과 MM이 주어진다 (1≤N≤1001 \le N \le 100, 1≤M≤1001 \le M \le 100). NN은 격자의 행 수, MM은 열 수이다. 노드는 좌표로 지칭하며, 왼쪽 위 노드가 (1,1)(1, 1), 오른쪽 아래 노드가 (N,M)(N, M)이다.

이어지는 NN개의 줄에는 각각 MM개의 정수가 주어진다. ii행 jj열의 값은 노드 (i,j)(i, j)에서 (i+1,j)(i+1, j) 방향(아래쪽) 및 (i,j+1)(i, j+1) 방향(오른쪽)으로의 배선을 다음과 같이 나타낸다.

  • 00: 배선 (i,j)(i, j)-(i+1,j)(i+1, j)와 (i,j)(i, j)-(i,j+1)(i, j+1)이 모두 없다.
  • 11: 배선 (i,j)(i, j)-(i+1,j)(i+1, j)만 있다.
  • 22: 배선 (i,j)(i, j)-(i,j+1)(i, j+1)만 있다.
  • 33: 두 배선이 모두 있다.

격자 밖을 가리키는 값은 주어지지 않는다 (예를 들어 (N,M)(N, M)에서는 00만 유효하다).

출력

한 줄에 두 정수 KK와 VV를 공백으로 구분하여 출력한다. KK는 최소 비용 완성에 사용된 새 배선의 개수, VV는 그 완성의 총 비용이다.

힌트

그림 1은 하나의 회로를, 그림 2는 그 회로의 한 최소 비용 완성을 보여준다. 이 완성은 새 배선 55개를 사용해 총 비용 66을 이룬다. 완성 방법 자체는 유일하지 않지만 KK와 VV는 항상 유일하다.

예제3

  1. 예제 1

    입력
    4 5
    2 1 1 2 1
    0 3 0 1 0
    3 0 0 3 1
    0 2 0 2 0
    
    예상 출력
    5 6
    
  2. 예제 2

    입력
    2 2
    0 0
    0 0
    
    예상 출력
    3 4
    
  3. 예제 3

    입력
    3 1
    0
    0
    0
    
    예상 출력
    2 2