Выведите одно число – количество "плохих" мостов - 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.

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

  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
Похожие ответы