"Ненадежная сеть "
Некоторая фирма придумала хитрый способ очень быстрой
передачи сообщения между компьютерами. Было бы очень хорошо, но
один ученый утверждает, что, после опредленного количества
передач сообщения между компьютерами, первоначальное сообщение
искажается. Его объяснения этого были настолько туманными, что
никто ничего не понял и решили проверить это предположение
следующим образом. Несколько компьютеров соединяют друг с другом,
после чего одному из компьютеров вводится сообщение. Он посылает
это сообщение какому-то компьютеру, который соединен с ним. Как
только какой-то компьютер получает сообщение он его тут же
посылает другому компьютеру и т. д. После того, как сообщение
было послано ровно N раз, компьютер, на который пришло последний
(N-ый) раз сообщение выдает его на экран для того, чтобы его
сравнить с введенным сообщением. Возникает вопрос на каких
компьютерах нужно ожидать сообщение.
Ваша программа должна считать исходные данные из файла
TASK4B.DAT. В первой строке этого файла находится число M -
количество компьютеров соединенных в сеть (1<M<=100). Во второй
строке - S номер компьютера, в который вводится сообщение. На
третьей строке N количество пересылок (1<=N<2000000000 ). Далее
следует M строк по M чисел в каждой. Если в i-ой строке на j-ом
месте находится 1- то с компьютера i можно послать сообщение на
компьютер j, если 0 - то нельзя.
Ваша программа должна решить задачу и записать в первую
строку выходного файла TASK4B.SOL число компьютеров, на которых
следует ожмдать сообщение, и в следующих строках записать номера
всех этих компьютеров. Номера компьютеров должны располагаться в
возрастающем порядке.
Примечание: связь между компьютерами односторонняя, т.е.
если можно послать сообщение с компьютера i на компьютер j, то
нет гарантии, что с компьютера j можно послать сообщение на
компьютер i; с любого компьютера можно послать куда-нибудь
сообщение.
Примеры входных и выходных данных:
TASK4B.DAT
4
2
3
0 1 0 0
0 0 1 0
0 0 0 1
1 0 0 1
TASK4B.SOL
2
1
4
Максимальное количество баллов 30.
|