Я нашел проблему в LightOJ, где проблема заключалась в том, чтобы найти второй самый короткий путь в графе от узла 1 до узла n (На графике, отмеченном с 1, есть n узлов к n). Теперь проблема заключалась в том, что я могу отступить, чтобы найти второй самый короткий путь. Один из образцов случаев, как это:Поиск второго кратчайшего пути в графике (с обратным трассированием)
- Край от узла 1 до 2, стоимость 100.
- края от узла 2 до 3, стоимость 300.
- края от узла 1 до 3, стоимость 50 .
Ответ на этот тест - 150, для этого пути 1-> 2-> 1-> 3. Я знаю об алгоритме Дейкстры. Но я не мог найти ничего о том, как это сделать. Прошу прощения, если это и старая тема, но я, когда я искал ее, ничего не нашел.
Обновление: я прочитал этот вопрос. Which algorithm can I use to find the next to shortest path in a graph? Мой вопрос отличается от этого, потому что в этой проблеме я могу использовать ребро дважды. Я перехожу от узла 1 к 2 один раз, а затем возвращаюсь к 1. Это использование края 1-> 2 дважды.
Возможный дубликат [Какой алгоритм я могу использовать для поиска ближайшего к кратчайшему пути в графике?] (Http://stackoverflow.com/questions/4971850/which-algorithm-can-i-use-to-find -the-next-to-shortest-path-in-a-graph) –
Вам нужно сохранить вектор стоимости самых дешевых двух путей при прохождении графика. –
Я видел этот вопрос. Но мне нужен алгоритм, который может backtrack @ 500-InternalServerError –