Сначала найдем кратчайший путь от 1-ой вершины до последней. Обозначим длину как $len$. Ищем все пути от 1-ой вершины до последней (можно dfs-ом) с длиной $len$, затем еще раз ищем пути, но уже с длиной $len+1$, ..., и т.д. до того, как кол-во найденных путей стало больше или равно $l$. Затем сортируем пути и выводим первые $l$ из них.