Percorso palindromo

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

Per festeggiare i 40 anni di Monica, Mojito le ha preparato una sorta di caccia al tesoro.

Come ben noto, l'infrastruttura di Milano (la città dove vive Monica) è formata da NN incroci, numerati da 00 a N−1N - 1, e da MM strade bidirezionali numerate da 00 a M−1M - 1 che collegano tali incroci. La ii-esima strada collega gli incroci AiA_i e BiB_i.

Mojito ha disseminato una pallina in ciascuna delle MM strade. Su ogni pallina è impressa una lettera: in particolare, la pallina posta nella ii-esima strada reca la lettera LiL_i.

"Le palline preferite da Mojito sono quelle con la sua iniziale"

L'obiettivo di Monica è andare (a piedi) dal suo appartamento, che si trova all'incrocio XX, all'incrocio YY in cui la aspetta Mojito. Ogni volta che percorre una strada, Monica deve segnare su un foglio la lettera scritta sulla pallina che si trova in quella strada (lasciando la pallina dov'è). Quando raggiunge Mojito, Monica avrà vinto se sul foglio è scritta una parola palindroma (una parola si dice palindroma quando rimane invariata se la si legge al contrario).

Aiuta Monica a vincere il gioco percorrendo il minimo numero possibile di strade, per evitare di infrangere il coprifuoco!

Nota: Il percorso di Monica può passare più volte da uno stesso incrocio o anche da una stessa strada.

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.

Ogni caso di test è composto da M+2M+2 righe:

  • la prima riga contiene i due interi NN e MM, il numero di incroci e il numero di strade.
  • la seconda riga contiene i due interi XX e YY, l'incrocio di partenza e l'incrocio di destinazione.
  • le successive MM righe contengono ciascuna i due interi AiA_i, BiB_i e il carattere LiL_i che rappresentano l'ii-esima strada.

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 è la lunghezza minima di un percorso palindromo tra XX e YY. Se tale percorso non esiste, s deve valere −1-1.

Assunzioni

  • T=24T = 24, nei file di input che scaricherai saranno presenti esattamente 2424 casi di test.
  • 1≤N≤3001 \le N \le 300.
  • 1≤M≤3001 \le M \le 300.
  • 0≤X,Y≤N−10 \le X,Y \le N-1.
  • 0≤Ai,Bi≤N−10 \le A_i,B_i \le N-1 per ogni 0≤i≤M−10 \le i \le M-1.
  • LiL_i è una lettera minuscola dell'alfabeto inglese (a-z) per ogni 0≤i≤M−10 \le i \le M-1.
  • Per ogni coppia di incroci esiste al più una strada che li collega, e non esistono strade che iniziano e terminano nello stesso incrocio. Tutte le strade possono essere percorse in qualsiasi direzione.

Nei primi 55 casi di test valgono le seguenti assunzioni aggiuntive:

  • Tutte le lettere LiL_i sono uguali.

Esempi di input/output


Input:

3

5 5
0 4
0 1 b
1 3 c
0 2 a
2 1 c
3 4 a

6 5
3 4
0 5 a
4 5 a
3 1 z
2 3 a
0 3 b

4 3
0 2
0 1 o
1 2 i
2 3 i

Output:

Case #1: 4
Case #2: 5
Case #3: -1

Spiegazione

Nel primo caso d'esempio il percorso palindromo di lunghezza minima tra i nodi 00 e 44 è 0→2→1→3→40 \rightarrow 2 \rightarrow 1 \rightarrow 3 \rightarrow 4, che compone la parola acca. Esiste un percorso più breve, 0→1→3→40 \rightarrow 1 \rightarrow 3 \rightarrow 4, che passa per 33 strade ma non è palindromo e quindi non risulta valido.

Esempio 1

Nel secondo caso d'esempio la soluzione è il percorso palindromo 3→2→3→0→5→43 \rightarrow 2 \rightarrow 3 \rightarrow 0 \rightarrow 5 \rightarrow 4, per un totale di 55 strade percorse, che compone la parola aabaa. Si noti come questo percorso passa due volte per la strada che collega gli incroci 22 e 33.

Esempio 2

Nel terzo caso d'esempio, qualunque percorso che collega gli incroci 00 e 22 inizia con la lettera o e termina con la lettera i, e pertanto non può essere palindromo.

Esempio 3

Invia soluzione

Accedi per inviare soluzioni
Accedi