Вилли, это же школьная задача! В ней свойства компьютеров и вирусов упрощены до предела, и, естественно, здорово отличаются от реальных. Вы-то программист супервысокого уровня, наверняка небось даже настоящие компьютеры видели, а уж вирусов ежедневно как блох ногтем сотнями давите. А посему давайте не будем слишком придирчиво относиться к условию и требовать большей степени реализма, чем это необходимо для простой задачи.
Кстати тут вот решение.
Показать скрытый текст
Докажем несколько утверждений.
1) На каждый компьютер вирусы попадают хотя бы дважды.
Рассмотрим, например, компьютер 1. Если на него первым попал вирус с компьютера 100, то на него попадет ещё и вирус 1. Если же первым на компьютер 1 попал вирус 1, то вирус, попавший на компьютер 100 первым (возможно, это тот же вирус 1, обошедший весь круг), обязательно перейдёт на компьютер 1.
2) Все вирусы погибнут.
Действительно, на каждый компьютер попадает хотя бы два вируса, при этом второй вирус по условию погибает. Значит, на каждом компьютере погибнет хотя бы один вирус. Но вирусов столько же, сколько компьютеров, значит, все вирусы погибнут.
3) Ни на один компьютер не могут попасть три вируса.
Рассмотрим компьютер, на котором погиб последний из всех 100 вирусов (пусть это компьютер 1; если несколько последних погибли одновременно, рассмотрим любой из них). Тогда этот вирус попал на на него вторым (иначе на нём погибло бы больше одного вируса), и позже вирусы на него уже не попадали. Таким образом, на компьютер 1 попали ровно два вируса. Но тогда и на компьютер 2 попали ровно два вируса: один "свой" и один с компьютера 1. Тогда и на компьютер 3 попало ровно два вируса. И т. д.
Итак, на каждый компьютер вирусы попадают ровно два раза, а после этого компьютер восстанавливается. Таким образом, после гибели всех вирусов все компьютеры будут работать нормально!