Полный график только с двумя возможными затратами. Сколько стоит кратчайший путь от 0 до N - 1

Вам дан полный неориентированный граф с N вершинами. Все ребра, кроме K, имеют стоимость A. Эти ребра K имеют стоимость B, и вы их знаете (как список пар). Какова минимальная стоимость от узла 0 до узла N - 1.

2 <= N <= 500k
0 <= K <= 500k
1 <= A, B <= 500k 

Проблема, очевидно, заключается в том, что когда эти K ребер стоят дороже, чем другие, а узел 0 и узел N - 1 соединены K-ребром.

Дейкстра не работает. Я даже пробовал что-то очень похожее с BFS.

Step1: Let G(0) be the set of "good" adjacent nodes with node 0.
Step2: For each node in G(0):
              compute G(node)
              if G(node) contains N - 1
                  return step

              else
                  add node to some queue
       repeat step2 and increment step

Проблема в том, что это занимает много времени из-за того, что для каждого узла вам нужно сделать цикл от 0 до N - 1, чтобы найти «хорошие» соседние узлы.

У кого-нибудь есть идеи получше? Спасибо.

Изменить: Вот ссылка с конкурса ACM:http://acm.ro/prob/probleme/B.pdf

Ответы на вопрос(4)

Ваш ответ на вопрос