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.
- Scarica la traccia in C: gossip.c
- Scarica la traccia in C++: gossip.cpp
- Scarica la traccia in C#: gossip.cs
- Scarica la traccia in Go: gossip.go
- Scarica la traccia in JavaScript (HTML): gossip.html
- Scarica la traccia in Java: gossip.java
- Scarica la traccia in JavaScript (wasm-ide): gossip.js
- Scarica la traccia in Pascal: gossip.pas
- Scarica la traccia in Python: gossip.py
- Scarica la traccia in VisualBasic: gossip.vb
Descrizione del problema
Iniziano già a girare voci tra i partecipanti su chi sarà il prossimo vincitore delle Olimpiadi Italiane di Informatica.

Tra gli partecipanti delle OII, numerati da a , ci sono amicizie, l'-esima delle quali stabilisce che le persone e sono amiche. La rete delle amicizie è connessa: per ogni coppia di partecipanti esiste almeno una catena di amicizie che le collega.
Il primo giorno nascono pettegolezzi, numerati da a : l'-esimo dei quali viene lanciato dalla persona , che crede fin da subito a quel pettegolezzo.
Nei giorni successivi, chiunque creda a un pettegolezzo lo condivide con i propri amici. Durante ogni giornata, i pettegolezzi vengono condivisi in ordine di indice: prima il pettegolezzo , poi l', e così via fino al .
I partecipanti sono molto prevedibili: credono solo al primo pettegolezzo che sentono. Una volta convinti di un pettegolezzo, lo condivideranno a partire dal giorno successivo e ignoreranno tutti gli altri.
Dopo un certo numero di giorni ogni partecipante crederà a un pettegolezzo e le voci smetteranno di diffondersi.
Stabilisci per ognuno degli partecipanti a quale pettegolezzo crederà una volta che le voci si saranno diffuse completamente.
Attenzione: per evitare file di output di grandi dimensioni, dovrai stampare il risultato come segue.
Detto il pettegolezzo a cui alla fine crederà l'-esimo partecipante, stampa
ovvero la somma dei pettegolezzi finali, ciascuno moltiplicato per l'indice del partecipante aumentato di .
Attenzione: questa quantità è troppo grande per essere rappresentata con un intero a 32 bit, ricordati di utilizzare un tipo di intero ad almeno 64 bit.
Formato di input
La prima riga del file di input contiene un intero , il numero di casi di test. Seguono casi di test, numerati da a . Ogni caso di test è preceduto da una riga vuota.
Ogni caso di test è composto come segue:
- una riga contenente i tre interi , , .
- una riga contenente gli interi .
- righe, la -esima contenente i due interi , .
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 ), seguita dall'intero a 64 bit .
Assunzioni
- , nei file di input che scaricherai saranno presenti esattamente casi di test.
- .
- .
- , per ogni tale che .
- , per ogni tale che .
- Le coppie di amicizie sono tutte distinte.
- Non esistono persone amiche di se stesse.
- Le amicizie formano un grafo connesso.
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.
Esempi di input/output
Input:
4
5 4 3
4 1 2
0 1
0 2
0 3
0 4
5 6 2
4 1
0 2
0 3
3 4
3 1
1 2
1 4
5 4 2
1 3
0 1
1 2
2 3
3 4
7 6 3
3 1 6
0 1
1 2
2 3
3 4
4 5
5 6
Output:
Case #1: 8
Case #2: 5
Case #3: 9
Case #4: 29
Spiegazione
Nel primo caso d'esempio il grafo dei pettegolezzi inizialmente è il seguente:
I pettegolezzi vengono condivisi nel seguente modo:
- Dopo un giorno il partecipante inizia a credere al pettegolezzo , condiviso dal partecipante .
- Dopo due giorni anche il partecipante inizia a credere al pettegolezzo .
Il grafo finale è dunque il seguente:
Dunque, i partecipanti crederanno rispettivamente ai pettegolezzi . L'intero da stampare è dunque .
Nel secondo caso d'esempio il grafo inizialmente è il seguente:
I pettegolezzi vengono condivisi nel seguente modo:
- Dopo un giorno il partecipante inizia a credere al pettegolezzo , e il partecipante inizia a credere al pettegolezzo .
- Dopo due giorni il partecipante inizia a credere al pettegolezzo .
Il grafo finale è dunque il seguente:
Dunque, i partecipanti crederanno rispettivamente ai pettegolezzi . L'intero da stampare è dunque .
Nel terzo caso di esempio, quando nessun pettegolezzo si starà più spargendo, i partecipanti crederanno rispettivamente ai pettegolezzi . L'intero richiesto è quindi .
Nel quarto caso di esempio, quando nessun pettegolezzo si starà più spargendo, i partecipanti crederanno rispettivamente ai pettegolezzi . L'intero richiesto è quindi .