Espansione del danno

Attenzione: Questo task ha un tempo limite di 10 minuti per l'invio della soluzione. Una volta richiesto un input, il timer partirà in automatico, e dopo la scadenza non sarà più possibile inviare una soluzione per quell'input. È sempre possibile richiedere un nuovo input, per cui non preoccuparti se il timer scade: dovrai semplicemente richiedere e scaricare un nuovo input.

Per aiutarti con questo task, abbiamo preparato delle tracce di soluzione, che includono solo le parti di lettura dell'input e scrittura dell'output (da tastiera e su schermo). Puoi decidere se leggere/scrivere su file decommentando le opportune righe di codice.

Descrizione del problema

Noemi ha un bellissimo monitor i cui N×MN \times M pixel sono organizzati su NN righe e MM colonne. Ogni pixel è indicato da una coppia di indici (Ri,Ci)(R_i, C_i): il pixel in alto a sinistra è indicato dalla coppia (1,1)(1, 1), quello in basso a destra dalla coppia (N,M)(N, M). Un giorno Noemi nota che purtroppo PP pixel sono bruciati. Noemi sa che un danno del genere nasce e si espande nel seguente modo: uno stesso giorno alcuni pixel si bruciano spontanamente; da quel giorno, ogni giorno si bruciano anche i pixel adiacenti (cioè con un lato in comune) a quelli che si sono bruciati nei giorni precedenti.

"img"

Noemi vuole capire quanti giorni fa al massimo si sono bruciati i primi pixel, la sapresti aiutare?

Attenzione: in tutti i gruppi di test, eccetto l'ultimo, i pixel bruciati non toccano il bordo del monitor.

Formato di input

La prima riga del file di input contiene un intero TT, il numero di casi di test. Seguono TT casi di test, numerati da 11 a TT. Ogni caso di test è preceduto da una riga vuota.

Ogni caso di test è composto come segue:

  • una riga contenente i tre interi PP, NN, MM.
  • PP righe, la ii-esima contenente i due interi RiR_{i}, CiC_{i}.

Formato di output

Il file di output deve contenere la risposta ai casi di test che sei riuscito a risolvere. Per ogni caso di test che hai risolto, il file di output deve contenere una riga con la dicitura "Case #test: ", dove test è il numero del caso di test (a partire da 11), seguita dall'intero ris\mathtt{ris}.

Assunzioni

  • T=20T = 20, nei file di input che scaricherai saranno presenti esattamente 2020 casi di test.
  • 1P1051 \leq P \leq 10^5.
  • 1RiN1051 \leq R_i \leq N \leq 10^5, dove RiR_i è l'indice di riga dell'ii-esimo pixel bruciato fornito nell'input.
  • 1CiM1051 \leq C_i \leq M \leq 10^5, dove CiC_i è l'indice di colonna dell'ii-esimo pixel bruciato fornito nell'input.
  • in tutti i gruppi di test, eccetto l'ultimo, i PP pixel bruciati non toccano il bordo del monitor.

Gruppi di testcase:

I casi di test sono suddivisi in 10 gruppi.
Ogni gruppo vale 5 punti che vengono ottenuti se si risolvono correttamente tutti i testcase del gruppo. Gruppi diversi possono contenere testcase rispondenti alle stesse assunzioni.

AssunzioniGruppiN=11,2il danno eˋ stato creato da un solo pixel3,4P1005,6P1057,8Nessuna assunzione aggiuntiva9,10\small \def\arraystretch{1.5} \begin{array}{|c|c|} \hline \texttt{Assunzioni} & \texttt{Gruppi} \\ \hline N = 1 & 1, 2 \\ \hline \text{il danno è stato creato da un solo pixel} & 3, 4 \\ \hline P \leq 100 & 5, 6 \\ \hline P \leq 10^5 & 7, 8 \\ \hline \text{Nessuna assunzione aggiuntiva} & 9, 10 \\ \hline \end{array}

Esempi di input/output


Input:

4

3 4 6
2 4
3 4
3 3

5 6 6
4 3
3 4
4 5
4 4
5 4

5 1 10
1 8 
1 6 
1 9 
1 7 
1 10 

6 8 8 
4 3
7 6
3 4
4 5
4 4
5 4

Output:

Case #1: 0
Case #2: 1
Case #3: 4
Case #4: 0

Spiegazione

Nel primo caso di esempio, il danno attuale osservato da Noemi corrisponde al danno iniziale. Quindi il danno è stato fatto oggi! Il numero scritto in ognuno dei pixel bruciati indica il giorno in cui il pixel si è bruciato.

"es1"

Nel secondo caso di esempio, il danno iniziale interessava il solo pixel (4,4)(4,4). In un solo giorno sono poi stati coinvolti i 4 pixel ad esso adiacenti. Il numero scritto in ognuno dei pixel bruciati indica il giorno in cui il pixel si è bruciato.

"es2"

Nel terzo caso di esempio il danno che Noemi vede sul suo monitor potrebbe essere stata causata 44 giorni se il pixel in (1,10)(1, 10) si fosse bruciato o anche 33 giorni se il pixel in (1,9)(1, 9) si fosse bruciato. I primi pixel si sono bruciati al più 44 giorni fa e il danno non sarebbe potuto avvenire prima. Il numero scritto in ognuno dei pixel bruciati indica il giorno in cui il pixel si è bruciato.

"es3"

Nel quarto caso di esempio il danno che Noemi vede sul suo monitor è il seguente:

"es4"