Выведите одно число – количество "плохих" мостов - Pascal
Формулировка задачи:
Помогите пожалуйста решить задачу
В Банановой республике очень много холмов, соединенных мостами. На химическом заводе произошла авария, в результате чего испарилось экспериментальное удобрение "зован". На следующий день выпал цветной дождь, причем он прошел только над холмами. В некоторых местах падали красные капли, в некоторых – синие, а в остальных – зеленые, в результате чего холмы стали соответствующего цвета. Президенту Банановой республики это понравилось, но ему захотелось покрасить мосты между вершинами холмов так, чтобы мосты были покрашены в цвет холмов, которые они соединяют. К сожалению, если холмы разного цвета, то покрасить мост таким образом не удастся. Посчитайте количество таких "плохих" мостов.
Входные данные
В первой строке входных данных содержится число N (0 < N ≤ 100) – количество холмов. Далее идет матрица смежности, описывающая наличие мостов между холмами (1 – мост есть, 0 – нет). После матрицы смежности идёт пустая строка, и в последней строке записано N чисел, обозначающих цвет холмов: 1 – красный; 2 – синий; 3 – зеленый.Выходные данные
Выведите одно число – количество "плохих" мостов. Примерывходные данные
7 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 1 1 1 3 3выходные данные
4Решение задачи: «Выведите одно число – количество "плохих" мостов»
textual
Листинг программы
var a: array[1..100, 1..100] of byte; b: array[1..100] of byte; s, i, j, n: integer; begin s := 0; read(n); for i := 1 to n do for j := 1 to n do read(a[i, j]); for i := 1 to n do read(b[i]); for i := 1 to n do for j := 1 to n do s := s + ord(b[i] <> b[j]) * a[i, j]; write(s div 2) end.
Объяснение кода листинга программы
- Объявляется двумерный массив
a
размерности 100x100, содержащий значения типа byte. - Объявляется одномерный массив
b
размерности 100 для хранения значений типа byte. - Объявляются переменные
s
,i
,j
,n
типа integer. Переменнаяs
инициализируется значением 0. - Считывается значение переменной
n
с клавиатуры. - Выполняется двойной цикл считывания значений массива
a
с клавиатуры. - Выполняется цикл считывания значений массива
b
с клавиатуры. - Выполняется цикл для вычисления переменной
s
с помощью формулы, содержащей операцию деления и умножения. - Выводится результат деления переменной
s
на 2.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д