Gerarchie di tutor

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

Le Olimpiadi Italiane di Informatica sono gestite da Luigi con l'aiuto di NN ragazzi e ragazze che prendono il nome di tutor. Questi membri dello staff (che in passato hanno partecipato alle OII come voi!) con grande impegno e dedizione mettono a beneficio delle OII le loro conoscenze tecniche. In così tanti però è difficile organizzarsi, per questo già da molti anni è stata definita una gerarchia molto precisa che, se rispettata, massimizza l'efficienza della squadra.

Al tutor ii-esimo è stato associato un tutor di riferimento RiR_i, che è in pratica un altro tutor incaricato di supervisionare il suo lavoro. In cima alla gerarchia si trova il tutor leader, al quale non è assegnato alcun tutor di riferimento.

Esempio di gerarchia

L'efficiacia di questa politica è massima quando ogni tutor di riferimento risulta più competente di tutti i tutor che è incaricato di supervisionare. Negli ultimi anni però, Luigi si è accorto che qualcosa non va: sembra infatti che i livelli di competenza CiC_i dei vari tutor siano cambiati e che quindi non ci sia più il bilanciamento necessario. Urge una riorganizzazione! Però, essendo tra amici, ed essendo la burocrazia molto costosa, sarà necessario prestare molta attenzione alle promozioni fatte.

La promozione di un tutor ii consiste nello scambio di ruolo tra ii ed il suo tutor di riferimento, di fatto facendo salire ii nella gerarchia e facendo scendere il suo supervisore. Ognuna di queste operazioni ha un costo e, per ribilanciare l'intera struttura, Luigi vorrebbe farne il minor numero possibile.

Essendo tra amici, Luigi vuole evitare che un tutor venga continuamente promosso e declassato durante la riorganizzazione. Per evitare ogni problema si impone quindi la seguente regola: se un tutor viene promosso, tutti i successivi scambi di ruolo che lo coinvolgono dovranno essere ancora delle promozioni.

Aiuta Luigi a calcolare il numero di minimo di scambi che deve fare per riorganizzare la gerarchia senza però mai violare la sua regola!

Dati 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.

Ciascun caso di test è composto da N+1N+1 righe: la prima contiene un numero intero NN, il numero di tutor. Ciascuna delle seguenti NN righe contiene due interi RiR_i e CiC_i separati da spazio: rispettivamente l'indice del tutor di riferimento ed il livello di competenza dell'ii-esimo tutor (con ii che va da 00 a N−1N-1).

Dati 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 #t: s

dove t è il numero del caso di test (a partire da 11) e il valore s è il minimo numero di scambi per bilanciare la gerarchia rispettando le regole.

Assunzioni

  • T=19T=19, nei file di input che scaricherai saranno presenti esattamente 1919 casi di test.
  • 1≤N≤10001 \le N \le 1000.
  • 0≤Ci≤N−10 \le C_i \le N-1.
  • 0≤Ri≤N−10 \le R_i \le N-1 se ii non è il tutor leader, Ri=−1R_i = -1 se ii è il tutor leader.
  • I valori di competenza dei tutor sono numeri da 00 a N−1N-1 e sono tutti distinti.
  • Non è consentito declassare un tutor dopo una sua promozione ma è possibile declassarlo prima.
  • Esiste uno ed un solo tutor leader.
  • Risalendo la catena di supervisori di un qualsiasi tutor, si raggiunge sempre il tutor leader.

Esempi di input/output


Input:

2

7
6 6
-1 0
4 4
1 2
1 1
4 3
4 5

8
3 6
2 4
-1 7
2 5
5 1
2 0
3 2
5 3

Output:

Case #1: 6
Case #2: 2

Spiegazione

Nel primo caso d'esempio sono presenti 7 tutor, una possibile sequenza di scambi di ruolo ottima è la seguente:

  • Tre promozioni del tutor 0 facendolo diventare tutor leader e declassando prima il tutor 6, poi il tutor 4 e poi il tutor 1.
  • Due promozioni del tutor 5, declassando il tutor 4 e poi il tutor 1.
  • Una promozione del tutor 4, declassando il tutor 1.

I tutor che hanno subito una promozione (0, 5 e 4) non hanno successivamente subito alcun declassamento, la situazione finale risulta bilanciata in quanto tutti i tutor hanno più competenze di coloro che sorvegliano.

Nella figura seguente, il valore nel nodo bianco è l'indice del tutor, mentre il valore nel pallino grigio è il valore di competenza di quel tutor.

Primo caso d'esempio


Nel secondo caso d'esempio sono sufficienti i seguenti due scambi di ruolo per bilanciare l'organizzazione.

Secondo caso d'esempio

Invia soluzione

Accedi per inviare soluzioni
Accedi