|Camino más largo en un DAGDifícil
Ejercicio00:00

¿Quieres un reto mayor?

Resuelve en 15:00

info

Importante: Para que se registre el resultado tienes que iniciar sesión.

Camino más largo en un DAG

Difícil50 pts·Algoritmos

Enunciado

Dado un grafo dirigido acíclico (DAG) con n nodos (numerados de 0 a n-1) y una lista de aristas con peso, encuentra la longitud del camino más largo que comienza desde el nodo 0.

Cada arista se representa como [u, v, w], donde u → v es la dirección y w es el peso (entero no negativo).

Si no existe ningún camino desde el nodo 0 a otros nodos, retorna 0.

Notas:

  • El grafo siempre es un DAG (no hay ciclos).
  • Pueden existir nodos aislados (sin aristas).
  • El nodo 0 siempre existe (n ≥ 1).

Ejemplos

Ejemplo 1 — cadena simple

longestPathDAG(4, new int[][]{{0,1,1},{1,2,2},{2,3,3}})
// 6  → camino 0→1→2→3, suma: 1+2+3 = 6

Ejemplo 2 — rutas alternativas

longestPathDAG(4, new int[][]{{0,1,5},{0,2,3},{1,3,2},{2,3,4}})
// 7  → mejor camino: 0→2→3 con 3+4=7

Ejemplo 3 — un solo nodo

longestPathDAG(1, new int[][]{})
// 0

Pista

Usa ordenamiento topológico (algoritmo de Kahn) para procesar los nodos en orden, y relaja las distancias en ese orden.

Restriccionesexpand_more
  • Dificultad: Difícil
  • Completa todos los test cases para obtener los 50 puntos.
  • No modificar la línea export al final del archivo.
  • Se recomienda evitar el uso de inteligencia artificial para que realmente tú practiques los ejercicios.

Puedes usar System.out.println() para depurar. Los resultados aparecen en la Consola de salida, no en el navegador.

Inicia sesión para reaccionar
Inicia sesión para reaccionar
Camino más largo en un DAG — Difícil | Coding Challenges · Coding Challenges