Scrivo qui subito perché sennò non ci dormirò la notte…(lol)
In gara ho scritto in tipo 10 minuti una soluzione in O(n^2) per questo problema…salvo poi passare le successive 2h a capire perché va in loop in alcuni casi negli ultimi due subtask!
Io avevo pensato: considerando i limiti di velocità come proprietà degli archi (come se fossero lunghezze in pratica) e implementando il grafo come array di vector di pair, con una DFS partendo da ogni nodo si esplora il grafo provando tutti i percorsi con limiti crescenti, per poi ritornare la lunghezza del percorso quando non si può più andare avanti. Questi percorsi vanno poi a popolare un vector, che viene scorso alla fine e viene mandato in output il valore più grande. Questo risolve senza problemi i primi subtask, ma negli ultimi 2 in alcuni casi esce dai limiti di tempo.
Ora, considerando che il massimo valore di N è 10^4 e che in altri casi negli stessi subtask il programma sta ampiamente nei limiti, mi vien da pensare che finisca in un loop da qualche parte.
Dove sta l’inghippo???
L’input è un grafo diretto, ogni arco ha un limite di velocità, chiede di trovare il massimo numero di archi percorribili con limiti di velocità crescenti.
Prova a postare il sorgente, se si può (sono nuovo del forum).
Hai un link al problema?
In realtà la soluzione era molto semplice…
Se ricordo bene, bastava salvare in ogni arco, partendo da questo, la lunghezza massima del percorso raggiungibile.
Fai partire la visita da ogni arco, però se arrivi ad un arco già processato, ovviamente non lo riprocessi.
Una specie di programmazione dinamica…
https://drive.google.com/file/d/0BwdVhBTGMF5GSG9VWVlmaHFoQWtLS1F6R1N1Y2x0aWhtQmZB/view?usp=sharing
Questo è il testo del problema…
Ti sei salvato le soluzioni dei sotto-problemi?
Non penso si possa andare in loop dal momento che devi sempre prendere archi in peso strettamente crescente.
Gabriele ha appena aggiunto i task al correttore
Esatto, ho appena caricato tutti i problemi dell’ultima gara. Buon debugging
si poteva risolvere anche con una soluzione di dinamica?