Данная проблема является http://www.spoj.com/problems/TOPOSORT/ Выходной формат особенно важно, так как:Почему моя логика не работает правильно для SPOJ TOPOSORT?
Print "Sandro fails." if Sandro cannot complete all his duties on the list.
If there is a solution print the correct ordering,
the jobs to be done separated by a whitespace.
If there are multiple solutions print the one, whose first number is smallest,
if there are still multiple solutions, print the one whose second number is smallest, and so on.
То, что я делаю, просто делает глубину, поменяв края т.е. если задание на завершается до работы В, есть направленное ребро из B до A. Я поддерживаю порядок, сортируя список смежности, который я создал, и сохраняю узлы, которые не имеют каких-либо ограничений отдельно, чтобы печатать их позже в правильном порядке. Используются два массива флагов: один для маркировки обнаруженного узла и один для маркировки узла, чьи соседи были исследованы.
Теперь мое решение - http://www.ideone.com/QCUmKY (важная функция - функция посещения) и его предоставление WA после правильной работы в 10 случаях, поэтому очень трудно понять, где я делаю это неправильно, поскольку он работает для всех тестовых случаев которые я сделал вручную.
ДФС топологические раз сортировать здесь. Я написал очень оптимизированную версию, она все еще не работает. комментарий, если у вас есть предложения для большего количества оптимизаций. Но вам, вероятно, понадобится использовать алгоритм @templatetypedef. мой код: http://ideone.com/M3A3x3 – sukunrt