|  ROUTE | Имеется сеть из нескольких компьютеров, с настроенной по правилам TCP/IP маршрутизацией. Это означает, что: -
Каждый компьютер имеет 1 или более сетевых интерфейсов, -
Каждый интерфейс идентифицируется IP-адресом и маской подсети - это два 4-х байтных числа, разделенные точками через каждый байт, причем в двоичном представлении маска подсети выглядит следующим образом: сначала идет k единиц, потом m нулей, k+m=8*4=32. (Например 212.220.35.77 - IP-адрес, 255.255.255.128 - маска). -
2 компьютера относятся к одной подсети, если (IP1 AND NetMask1)= (IP2 AND NetMask2), где IPi и NetMaski - IP-адрес и маска i-го компьютера, AND - побитовое умножение. -
Пакет между компьютерами, находящими в одной подсети передается непосредственно. -
Пакет между компьютерами, находящимися в 2-х разных подсетях, проходит через компьютеры, имеющий интерфейсы, подключенные к нескольким подсетям, причем при переходе из подсети в подсеть, компьютер, на котором осуществляется этот переход, должен иметь интерфейсы, относящиеся к обеим подсетям. Составьте программу ROUTE, находящую кратчайший путь пакета между двумя указанными компьютерами. Ввод: во входном файле в первой строке стоит число N (N<=90) - количество компьютеров в сети, далее идет N секций, описывающих интерфейсы каждого компьютера. В первой строке секции стоит число K (K<=5) - количество интерфейсов этого компьютера, затем K строк - это описания интерфейсов, т.е. его IP-адрес и маска подсети. В последней строке файла стоят два числа - номера компьютеров между которыми надо найти путь. Вывод: слово Yes если путь существует, затем в следующей строке через пробел номера компьютеров, через которые проходит путь. Или слово No, если такого пути не существует. Пример: INPUT.TXT 6 2 10.0.0.1 255.0.0.0 192.168.0.1 255.255.255.0 1 10.0.0.2 255.0.0.0 3 192.168.0.2 255.255.255.0 212.220.31.1 255.255.255.0 212.220.35.1 255.255.255.0 1 212.220.31.2 255.255.255.0 2 212.220.35.2 255.255.255.0 195.38.54.65 255.255.255.224 1 195.38.54.94 255.255.255.224 1 6 OUTPUT.TXT Yes 1 3 5 6 |