Всем доброго времени суток! Недавно изучил алгоритм Дейкстры и его реализацию с помощью контейнера set. Но для того чтобы он (алгоритм) работал верно нужно было держать в контейнере данные типу pair что уменьшало скорость работы, поэтому я решил написать к контейнеру компаратор:
struct cmp { bool operator()(int a, int b) const { return d[a] < d[b];} };
здесь массив d[] хранит кратчайшее расстояние к вершине i;
Когда я попробовал добавить в контейнер число b, такое что d[a]==d[b] и a!=b, то ничего не произошло (то есть нужное число не добавилось в контейнер а релаксация вершины прошла) и как последствие неверная работа алгоритма :(
Возможно ли как-то это исправить (обойти проблему), или придется пользоваться контейнером с pair? Можно ли это реализовать с помощью других встроенных структур данных?
P.S.: За ранние всем спасибо :)
UPD: Проблема решена, но вопрос реализации с помощью других структур остается открыт.