http://rextester.com/ZZGGK27907
http://rextester.com/IGXLV67756
В данных ссылках один и тот же код. Но отличается для компиляторов C++ и C++11. В C++ ответ выводится верный. А в C++11 выводится просто 0. По идее, C++ и C++11 не должны сильно отличаться.
Почему может выводится разный ответ в одинаковых кодах? И где может быть ошибка?
Ответ
Не сильно вдавался в алгоритмические подробности, но как минимум одно проблемное место нашел:
stack
Я попробовал прогнать ваш код на указанном наборе входных данных и обнаружил, что к указанному моменту очередь Q оказывается пуста (не углублялся, должно так быть или нет). Соответственно Q.front().idx обращается к первому элементу пустой очереди. В результате возникает неопределенное поведение. А раз оно неопределенное, то, в зависимости от компилятора, программа ведет себя по разному. Как-то вам нужно этот момент корректно обойти или (если он - не то что вы ожидали), починить код до указанного.
Комментариев нет:
Отправить комментарий