Выведите одно число – количество "плохих" мостов - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д