Выведите одно число – количество "плохих" мостов - 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
Листинг программы
  1. var
  2.   a: array[1..100, 1..100] of byte;
  3.   b: array[1..100] of byte;
  4.   s, i, j, n: integer;
  5.    
  6. begin
  7.   s := 0;
  8.   read(n);
  9.   for i := 1 to n do
  10.     for j := 1 to n do
  11.       read(a[i, j]);
  12.   for i := 1 to n do
  13.     read(b[i]);
  14.   for i := 1 to n do
  15.     for j := 1 to n do
  16.       s := s + ord(b[i] <> b[j]) * a[i, j];
  17.   write(s div 2)
  18. end.

Объяснение кода листинга программы

  1. Объявляется двумерный массив a размерности 100x100, содержащий значения типа byte.
  2. Объявляется одномерный массив b размерности 100 для хранения значений типа byte.
  3. Объявляются переменные s, i, j, n типа integer. Переменная s инициализируется значением 0.
  4. Считывается значение переменной n с клавиатуры.
  5. Выполняется двойной цикл считывания значений массива a с клавиатуры.
  6. Выполняется цикл считывания значений массива b с клавиатуры.
  7. Выполняется цикл для вычисления переменной s с помощью формулы, содержащей операцию деления и умножения.
  8. Выводится результат деления переменной s на 2.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы