Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C] Топологическая сортировка со словарем


Автор: Pblcya 18.11.2011, 15:16
Здравствуйте! Нужна помощь в написании программы на С. Условие такое:

Дано некоторое конечное множество V и множество упорядоченных пар элементов из V - E . Иными словами, в множестве E содержатся пары (u, v), где: u, v ∈ V. Если (u, v)∈E, мы будем говорить, что u предшествует v. Постройте упорядоченную последовательность элементов из V  для которой верно, что если (u, v)∈E , то u предшествует v. 
 
В первой строке текстового файла ‘input.txt’ находятся слова, состоящие из английских букв, разделенные пробелом. Эти слова образуют множество V. Далее в каждой строке, за исключением, быть может, последней (которая может быть пустой), следуют пара слов, разделенных пробелом из множества V. Будем считать, что первое слово предшествует второму. Выведите в текстовый файл ‘output.txt’ через пробел слова из множества V  в такой последовательности, что если одно слово предшествует другому, по условию задачи, то оно должно быть выведено раньше, второго. Если последовательность, удовлетворяющую условию, построить невозможно выведите сообщение ‘[Error]’ .

Дополнительные требования:
Работа с памятью должна быть корректной: необходимо использовать <crtdbg.h>. Использовать только С!

Пример:
"input.txt"
a b c d e f 
a b 
d c 
b d

"output.txt"
a b e d c f 


Помогите пожалуйста написать, а то я алгоритм в принципе понимаю, но с реализацией проблемы...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)