Strade e Guadagni

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 sta programmando la sua prossima vacanza in Truffandia! In Truffandia ci sono NN città collegate da MM strade bidirezionali (cioè ogni strada è attraversabile in entrambi i versi). Per percorrere ogni strada Noemi impiega un giorno di cammino.

Noemi infatti ha deciso che non vuole spendere soldi per questa vacanza, e si manterrà solo grazie agli introiti degli interessanti podcast che registrerà sul suo viaggio! Il pubblico di Noemi è molto affezionato e costante: al netto delle spese per alimentarsi, Noemi sa che riceverà una rendita di 11 moneta al termine di ogni giornata del suo viaggio, direttamente sul suo conto.

In ognuna delle NN città c'è un servizio di navette: nella città numero ii spendendo CiC_i monete Noemi può spostarsi con una navetta in una delle città collegate alla città ii, risparmiandosi un giorno di cammino. Purtroppo gli abitanti di Truffandia non sono molto corretti: infatti, ogni volta che Noemi spenderà soldi per una navetta il suo conto si azzererà completamente. Non solo, anche appena atterrerà in Truffandia il suo conto si azzererà completamente!

"Tipico Hotel di Truffandia"

Noemi partirà quindi dalla città 00 con 00 monete sul conto, e vorrebbe sapere quale è il minor numero di giorni di cammino che dovrà fare per raggiungere la N−1N-1-esima città, sfruttando la rete di strade e le navette quando possibile. Sapresti aiutarla?

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 due interi NN, MM.
  • MM righe, la ii-esima contenente due interi AiA_{i}, BiB_{i} che indicano la presenza di una strada bidirezionale tra AiA_{i} e BiB_{i}.
  • una riga contenente gli NN interi C0, …, CN−1C_{0}, \, \ldots, \, C_{N-1}.

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: x"

dove test\mathtt{test} è il numero del caso di test (a partire da 11) e l'intero x\mathtt{x} è il numero di giorni di cammino che servono a Noemi per raggiungere la sua meta.

Assunzioni

  • T=10T = 10, nei file di input che scaricherai saranno presenti esattamente 1010 casi di test.
  • 1≤N≤10 0001 \le N \le 10\ 000.
  • 1≤M≤10 0001 \le M \le 10\ 000.
  • 0≤Ai,Bi≤N−10 \le A_i,B_i \le N-1 per ogni 0≤i≤M−10 \le i \le M-1.
  • 1≤Ci≤100 0001 \le C_i \le 100\ 000 per ogni 0≤i≤N−10 \le i \le N-1.
  • è garantito sia possibile raggiungere la città N−1N-1 partendo dalla città 00.

Nei primi 22 casi di test la rete di strade è un albero: M = N-1.

Esempi di input/output


Input:

3

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

6 6
0 1
2 1
5 4
0 1
3 0
2 4
3 1 3 2 1 3

5 4
0 1 
3 1 
2 3 
4 2 
3 3 2 1 1

Output:

Case #1: 2
Case #2: 2
Case #3: 3

Spiegazione

Nel primo caso d'esempio Noemi può:

  • camminare per un giorno sulla strada 0→20 \rightarrow 2. A fine giornata troverà sul conto una moneta.
  • prendere la navetta sulla strada 2→42 \rightarrow 4.
  • camminare per un giorno sulla strada 4→54 \rightarrow 5 raggiungendo la destinazione finale.

"caso uno"

in totale Noemi cammina 22 giorni, e non si può fare di meglio.

Nel secondo caso d'esempio Noemi può:

  • camminare per un giorno sulla strada 0→10 \rightarrow 1. A fine giornata troverà sul conto una moneta.
  • prendere la navetta sulla strada 1→21 \rightarrow 2.
  • camminare per un giorno sulla strada 2→42 \rightarrow 4. A fine giornata troverà sul conto una moneta.
  • prendere la navetta sulla strada 4→54 \rightarrow 5 raggiungendo la destinazione finale.

"caso due"

in totale Noemi cammina 22 giorni, e non si può fare di meglio.

Nel terzo caso d'esempio la disposizione delle città di Truffandia è:

"caso tre"

Invia soluzione

Accedi per inviare soluzioni
Accedi