영 타블로가 싫은 재우

시간 제한2.5초메모리 제한1024 MB

요약
N개의 영 타블로와 합칠 수 있는 쌍이 주어질 때, 칸 추가/삭제 비용과 무료 거울 합치기를 써서 모든 영 타블로를 직사각형으로 만드는 최소 비용을 구한다.
난이도

어려움10점 중 9점

유형
그리디, 그래프, 최소 신장 트리, 구현
정답자
아직 제출이 없습니다

문제

2023년이 되고, 전년도의 활동을 통해 MatKor는 학부동아리로 승격되었다. 특히 <제2회 MatKor Cup:2023 Winter>가 끝나고 대회 검수자였던 종우, 대회에서 뛰어난 성적으로 입상한 세준이, 대회가 끝난 후 한 문제를 빼고 모두 업솔빙한 하늘이가 MatKor에 합류했다. 인원이 많아진 MatKor는 이때부터 세미나 분반을 실력별로 초, 중, 고급으로 나누어 세미나를 진행하게 되었다.

MatKor에서는 동아리가 설립된 2022년부터 지금까지 한 번도 빠짐없이 세미나 주제 중에 영 타블로가 있다. 매년 동우의 영 타블로 수업을 듣던 재우는 화가 나 이제 영 타블로를 없애버리고자 한다.

영 타블로는 정수로 이루어진 λ=(λ_1,λ_2,⋯ ,λ_H)\lambda =\left( \lambda\_1,\lambda\_2,\cdots ,\lambda\_H \right)로 나타낼 수 있다. 이는 높이가 HH이고, 11행 부터 순서대로 HH행까지 각 행의 길이가 λ_i\lambda\_i인 모양을 의미하는데, λ_1≥λ_2≥⋯≥λ_H≥1\lambda\_1\ge\lambda\_2\ge\cdots\ge\lambda\_H\ge 1을 만족해야 한다. 예를 들어 영 타블로 λ=(5,4,1)\lambda =\left( 5,4,1 \right)은 다음을 의미한다.

동우는 재우에게 처음에 높이가 HH로 동일한 영 타블로 NN개를 주었다. 또한, NN개의 영 타블로 중 합칠 수 있는 MM개의 쌍을 주었다. 이제 재우는 아래 행동을 반복하여 모든 영 타블로를 직사각형으로 만들고자 한다. 재우는 한 번 행동할 때, 아래 중 하나를 할 수 있다. 편의상 존재하지 않는 행인 H+1H+1 이상의 ii에 대해 λ_i=0\lambda\_i=0이라 하자.

  • 행동 1

    • 영 타블로 하나와 해당 영 타블로의 행 하나를 고른다.
    • 이때, 고른 행을 rr행 이라 하면, λ_r>λ_r+1\lambda\_r\gt\lambda\_{r+1}과 λ_r≥2\lambda\_r\ge 2를 만족해야 한다.
    • cc의 비용을 들여 해당 행의 마지막 열의 칸을 지운다.
  • 행동 2

    • 영 타블로 하나와 해당 영 타블로의 행 하나를 고른다.
    • 이때, 고른 행을 rr행 이라 하면, r=1r=1 혹은 λ_r<λ_r−1\lambda\_r\lt\lambda\_{r-1}을 만족해야 한다.
    • dd의 비용을 들여 해당 행의 마지막 열 뒤에 칸을 하나 추가한다.
  • 행동 3

    • 합칠 수 있는 영 타블로 쌍인 ii, j(i≠j)j(i\ne j)번 영 타블로를 골라 둘 중 하나를 180∘180^{\circ} 돌려서 다른 하나와 맞춘다.

    • 이때, 칸이 남거나 겹치면 안 되며, 비용은 발생하지 않는다.

      • 구체적으로, 두 영 타블로의 높이는 동일해야 하며, 이 높이를 hh라고 할 때 다음을 만족해야 한다.
      • aa번 영타블로가 (λ_1a,λ_2a,⋯ ,λ_ha)\left( \lambda\_{1}^a,\lambda\_2^a,\cdots ,\lambda\_h^a \right), bb번 영타블로가 (λ_1b,λ_2b,⋯ ,λ_hb)\left( \lambda\_{1}^b,\lambda\_2^b,\cdots ,\lambda\_h^b \right)라고 하면, 1≤k≤h1\le k\le h인 모든 정수 kk에 대해 λ_ka+λ_h−k+1b\lambda\_k^a+\lambda\_{h-k+1}^b가 동일하다.
    • 이 행동 이후 두 영 타블로는 하나의 직사각형이 되며, 두 영 타블로는 더 이상 행동에서 선택될 수 없다.

재우는 위의 행동을 원하는 만큼 반복하여 모든 영 타블로를 직사각형으로 만들고 싶다. 이를 위해 필요한 최소 비용과 그 과정을 구해보자. 최종적인 비용은 모든 행동에서 소모된 비용의 합이며, 행동 3을 통해 두 영 타블로를 합치지 않더라도 행동 1이나 행동 2만 사용하여 영 타블로 하나를 하나의 직사각형으로 만들 수 있다는 점에 유의하자.

입력

첫 번째 줄에 영 타블로의 개수 N(1≤N≤5,000)N(1\le N\le 5\\, 000), 합칠 수 있는 영 타블로의 쌍의 개수 M(0≤M≤min⁡(104,n(n−1)2))M(0\le M\le\min\left( 10^4,\frac{n(n-1)}{2} \right)), 영 타블로의 높이 H(1≤H≤500)H(1\le H\le 500)가 공백으로 구분되어 주어진다.

두 번째 줄에 비용을 의미하는 정수 cc, d(1≤c,d≤3,000)d(1\le c,d\le 3\\, 000)가 공백으로 구분되어 주어진다.

세 번째 줄부터 NN개의 줄에 걸쳐 11번 부터 NN번 영 타블로의 초기 상태를 의미하는 HH개의 정수 λ_1i,λ_2i,⋯ ,λ_Hi(106≥λ_1i≥λ_2i≥⋯≥λ_Hi≥1)\lambda\_{1}^i,\lambda\_2^i,\cdots ,\lambda\_H^i(10^6\ge\lambda\_1^i\ge\lambda\_2^i\ge\cdots\ge\lambda\_H^i\ge 1)가 공백으로 구분되어 한 줄에 영 타블로가 한 개씩 주어진다.

N+3N+3 번째 줄부터 MM개의 줄에 걸쳐 합칠 수 있는 영 타블로 쌍 a_i,b_i(1≤a_i,b_i≤Na\_i,b\_i(1\le a\_i, b\_i\le N; a_i≠b_i)a\_i \ne b\_i)가 한 줄에 하나씩 공백으로 구분되어 주어진다. 같은 쌍은 여러 번 주어지지 않는다.

출력

첫 번째 줄에 재우가 모든 영 타블로를 없애거나 남아있는 모든 영 타블로를 직사각형으로 만들기 위해 필요한 최소 비용을 출력한다.

두 번째 줄부터 NN개의 줄에 걸쳐 11번부터 NN번 영 타블로에 대해 ii번 영 타블로의 최종 상태를 의미하는 두 개의 정수 c_i,m_ic\_i,m\_i를 공백으로 구분하여 출력한다. 이는 다음과 같다.

  • 만약 해당 영 타블로가 행동 3에 영향을 받지 않고, 자기 자신이 직사각형이 되었다면, 가로를 c_ic\_i로 하고, m_i=im\_i=i으로 한다.
  • 만약 해당 영 타블로가 행동 3으로 합쳐졌다면, 최종 상태에서 합쳐진 직사각형의 가로를 c_ic\_i로 하고, m_im\_i는 행동 3에서 합쳐진 다른 영 타블로의 번호로 한다.

예제3

  1. 예제 1

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

    입력
    6 5 6
    1 2
    1 1 1 1 1 1
    4 1 1 1 1 1
    4 4 4 4 4 1
    4 4 4 4 4 1
    6 5 4 3 2 1
    9 9 8 8 4 4
    1 2
    2 3
    3 4
    4 5
    5 6
    
    예상 출력
    12
    1 1
    5 3
    5 2
    4 4
    10 6
    10 5
    
  3. 예제 3

    입력
    6 15 6
    1 2
    1 1 1 1 1 1
    4 1 1 1 1 1
    4 4 4 4 4 1
    4 4 4 4 4 1
    6 5 4 3 2 1
    9 9 8 8 4 4
    1 2
    1 3
    1 4
    1 5
    1 6
    2 3
    2 4
    2 5
    2 6
    3 4
    3 5
    3 6
    4 5
    4 6
    5 6
    
    예상 출력
    12
    5 4
    5 3
    5 2
    5 1
    10 6
    10 5