만드는 중입니다

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

시험관 2

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

요약
방향 비순환 그래프로 된 병과 처음 k개 병의 물질을 주고, 구간 [l, r]에 옮길 수 있는 물질의 최대 개수별로 구간이 몇 개인지 셉니다.
난이도

어려움10점 중 8점

유형
그래프, 투 포인터, 비트 연산
정답자
아직 제출이 없습니다

문제

바이타자르는 화학자이다. 여러 해 전 그는 물질 X를 만든 실험으로 이름을 알렸다. 그 물질이 인류의 문제를 모두 해결하지는 못했으므로, 이번에는 그 물질이나 다른 특정 용액을 만들려 하지 않는다. 그는 그저 실험을 하고 결과를 평가한다.

바이타자르의 실험실에는 1부터 nn까지 번호가 붙은 시험관 nn개가 있고, 액체가 흐를 수 있는 관 mm개로 연결되어 있다. 모든 시험관은 서로 다른 높이에 있다. 각 관의 액체는 아래 방향으로만 흐른다. ii번째 관은 시험관 aia_i와 시험관 bib_i를 잇고, 시험관 aia_i가 시험관 bib_i보다 높이 있다. 각 관에는 흐름을 막는 집게가 달려 있다. 바이타자르는 언제든 집게 하나를 골라 열 수 있고, 그러면 물질이 aia_i에서 bib_i로 흐른다. 물질이 모두 옮겨지면 집게를 다시 닫는다. 집게는 기계식이라 열린 상태를 유지하려면 힘이 들므로, 동시에 열려 있을 수 있는 집게는 하나뿐이다.

1번부터 kk번까지 시험관에는 위험한 화학 물질이 들어 있으며, 각 시험관마다 서로 다른 물질이 하나씩 있다. kk보다 큰 번호의 시험관은 처음에 비어 있다.

이 화학 물질은 매우 위험해서 어떤 경우에도 서로 다른 물질이 섞이면 안 된다. 물질은 미세한 찌꺼기를 남기므로, 이전에 다른 물질이 들어 있었던 시험관으로 물질을 흘려보내는 것도 허용되지 않는다.

바이타자르가 할 수 있는 일은 시험관 사이에서 물질을 옮기는 것뿐이며, 이때 어떤 두 물질도 섞이지 않도록 해야 한다. 물질을 안전하게 옮길 수 있으면 성질을 조사하기 편한 시험관으로 옮겨 둘 수도 있다.

화학자는 이제 k+1≤ℓ≤r≤nk + 1 \le \ell \le r \le n을 만족하는 구간 [ℓ,r][\ell, r]을 고르고, 그 구간에 속한 시험관으로 액체를 가능한 한 많이 옮긴 뒤 그곳에 놓인 화학 물질을 조사하려 한다. 어느 구간이 가장 편리한지 정하지 못했으므로, 각 구간 [ℓ,r][\ell, r]에 대해 구간 안의 시험관으로 옮길 수 있는 서로 다른 액체의 최대 개수 f(ℓ,r)f(\ell, r)을 구하려 한다. 각 x∈[0,k]x \in [0, k]에 대해 f(ℓ,r)=xf(\ell, r) = x인 구간 [ℓ,r][\ell, r]의 개수를 세는 프로그램을 작성하라.

입력

첫 줄에 세 정수 nn, mm, kk가 주어진다 (2≤n≤1052 \le n \le 10^5; 1≤m≤1061 \le m \le 10^6; 1≤k≤501 \le k \le 50; k<nk < n). 각각 시험관의 수, 관의 수, 처음에 물질이 들어 있는 시험관의 수이다.

다음 mm개의 줄에는 정수 aia_i, bib_i (1≤ai≤n1 \le a_i \le n; k+1≤bi≤nk + 1 \le b_i \le n)가 주어진다. 이는 시험관 aia_i에서 시험관 bib_i로 관을 따라 액체가 바로 흐를 수 있다는 뜻이다.

실험실 설명은 올바르다. 시험관을 정점, 관을 간선으로 보면 그래프에 순환이 없다. 높이는 주어지지 않지만, 관으로 직접 연결된 각 쌍에 대해서는 어느 시험관이 더 높은지 알 수 있다.

출력

k+1k + 1개의 줄을 출력한다. ii번째 줄에는 k+1≤ℓ≤r≤nk + 1 \le \ell \le r \le n이고 f(ℓ,r)=i−1f(\ell, r) = i - 1인 구간 [ℓ,r][\ell, r]의 개수를 한 정수로 쓴다.

힌트

7번 시험관으로 가는 관이 없으므로 f(7,7)=0f(7, 7) = 0이다.

바이타자르는 구간 [3,3][3, 3], [4,4][4, 4], [5,5][5, 5], [6,6][6, 6], [8,8][8, 8], [9,9][9, 9], [4,5][4, 5], [6,7][6, 7], [7,8][7, 8]에 각각 하나의 물질만 옮길 수 있으므로, 이 구간들의 ff는 모두 1이다. [3,3][3, 3]에는 1번 시험관의 물질이 들어가 3번 시험관에 놓인다. [7,8][7, 8]과 [8,8][8, 8]에는 2번 시험관의 물질이어야 한다.

두 물질을 모두 [4,5][4, 5]로 옮기려 하면, 4번 시험관에 부은 물질이 5번 시험관을 지나면서 찌꺼기를 남기고, 그 결과 두 번째 물질을 5번 시험관에 넣을 수 없다. 나머지 구간에서는 두 물질을 모두 옮길 수 있다.

예제1

  1. 예제 1

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