Module: Programación de gráficos dinámicos


Problem

5 /7


Acceso directo a DAG

Theory Click to read/hide

En las soluciones que utilizan programación dinámica es importante el orden en que se calculan las dinámicas (es necesario que antes se calculen los valores de los que depende la actual).
Por lo tanto, si es necesario utilizar programación dinámica en grafos acíclicos dirigidos, es necesario construir inicialmente una ordenación topológica del grafo. Luego, calcule la dinámica clasificando los vértices en el orden de la clasificación topológica construida (según el problema, el orden transversal puede ser de fuentes a sumideros o viceversa).
 
 

Problem

Se proporciona un gráfico acíclico ponderado dirigido. Se requiere encontrar el camino más corto en él
del vértice s al vértice t.

Entrada:
La primera línea del archivo de entrada contiene cuatro enteros n, m, s y t - el número de vértices, bordes del gráfico, los vértices inicial y final, respectivamente (1 <= n <= 100000; 0 <= m <= 200000; 1 <= s, t <= n).
Las siguientes m líneas contienen las descripciones de los bordes, una por línea. 
El número de arista i se describe mediante tres números enteros bi, ei y wi: el comienzo, el final y la longitud de la arista, respectivamente ( 1 <= b i, ei <= n;|wi| <= 1000). 
El gráfico no contiene ciclos ni bucles.

Salida:
La primera línea del archivo de salida debe contener un solo número entero: la longitud de la ruta más corta de s a t. 
Si no hay una ruta de s a t, imprima "Inalcanzable".

Ejemplos:
 
Entrada Salida
2 1 1 2
1 2 -10
-10
2 1 2 1
1 2 -10
Inalcanzable