Module: Programmazione di grafici dinamici


Problem

5 /7


Scorciatoia per DAG

Theory Click to read/hide

Nelle soluzioni che utilizzano la programmazione dinamica è importante l'ordine in cui vengono calcolate le dinamiche (è necessario che vengano calcolati prima i valori da cui dipende quella corrente).
Pertanto, se è necessario utilizzare la programmazione dinamica su grafi aciclici orientati, è necessario costruire inizialmente un ordinamento topologico del grafo. Quindi calcola la dinamica ordinando i vertici nell'ordine dell'ordinamento topologico costruito (a seconda del problema, l'ordine di attraversamento può essere dalle sorgenti ai sink o viceversa).
 
 

Problem

Viene fornito un grafico aciclico ponderato diretto. È necessario trovare il percorso più breve in esso
dal vertice s al vertice t.

Inserimento:
La prima riga del file di input contiene quattro numeri interi n, m, s e t - rispettivamente il numero di vertici, i bordi del grafico, i vertici iniziale e finale (1 <= n <= 100000; 0 <= m <= 200000; 1 < ;= s, t <= n).
Le m righe successive contengono le descrizioni dei bordi, una per riga. 
Il numero di bordo i è descritto da tre numeri interi bi, ei e wi - rispettivamente l'inizio, la fine e la lunghezza del bordo ( 1 <= b i, ei <= n;|wi| <= 1000). 
Il grafico non contiene cicli e loop.

Uscita:
La prima riga del file di output deve contenere un singolo numero intero, la lunghezza del percorso più breve da s a t. 
Se non esiste un percorso da s a t, stampa "Irraggiungibile".

Esempi:
 
Input Uscita
2 1 1 2
1 2 -10
-10
2 1 2 1
1 2 -10
Irraggiungibile