Поскольку вам нужны все пути, я бы использовал простой поиск в ширину. Однако я также советую свернуть все параллельные ребра в одно ребро со списком весов.
Как только вы получите все разные пути (то есть все пути, в которых посещались узлы, разные), для каждого пути вы можете рассчитать все возможные альтернативные параллельные маршруты.
Итак, если у вас есть следующие ребра:
A -> C (5)
A -> C (3)
A -> B (7)
B -> C (1)
B -> C (4)
Первый шаг превращает его в:
A -> C (5,3)
A -> B (7)
B -> C (1,4)
Поиск в ширину на этом графике даст следующие пути между A и B:
A -> B (7)
A -> C -> B (5,3) + (1,4)
Таким образом, для второго пути вы получите следующие расходы:
5 + 1
5 + 4
3 + 1
3 + 4
Само по себе это не будет быстрее, чем просто сделать BFS на исходном графе, но более простой граф легче обрабатывать.