М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Рэйн0165
Рэйн0165
19.11.2021 02:11 •  Информатика

Задача C. Кибер-взлом Имя входного файла: стандартный ввод
Имя выходного файла: стандартный вывод
Ограничение по времени: 2 секунды
Ограничение по памяти: 512 мегабайт
Ви пытается взломать сервера корпорации Арасака, чтобы отключить охрану и проникнуть в
их офис. Искусственный интеллект сервера пытается ему в этом помешать.
Взлом происходит следующим образом. Рассмотрим ориентированный граф, на каждом ребре
которого написана буква английского алфавита. Граф может содержать кратные ребра и даже
петли. У Ви есть токен, изначально находящийся в некоторой вершине v, и у ИИ сервера есть
токен, изначально находящийся в некоторой вершине u. Затем они по-очереди совершают ходы, Ви
ходит первым. На своём ходу Ви выбирает произвольное ребро, исходящее из вершины, в которой
находится его токен. Он перемещает токен по этому ребру, а также пытается произвести атаку типа
c, где c — символ, написанный на выбранном ребре. ИИ на своём ходу также выбирает одно из
рёбер, исходящих из вершины, в которой находится его токен, и перемещает токен по этому ребру.
При этом, чтобы успешно отразить атаку, он должен выбрать ребро, на котором написан тот же
символ c.
Если Ви не может сделать ход, потому что из вершины, в которой находится его токен, не исходит
ни одного ребра, взлом завершается провалом. Если ИИ не может выбрать ребро, исходящее из
вершины, в которой находится его токен, на котором написан символ c, взлом завершается успешно.
Также, возможна ситуация, в которой Ви и ИИ будут делать ходы бесконечно долго.
Ви определить количество стартовых состояний, то есть пар вершин v и u, при которых
взлом будет произведен успешно при оптимальных действиях Ви и ИИ.
Формат входных данных
В первой строке даны два целых числа n и m — количество вершин и ребер в графе (1 6 n 6 1 000,
0 6 m 6 1 000).
В следующих m строках дано описание ребер графа. Каждая строка содержит два целых числа
ai и bi и строчную букву английского алфавита ci
, они обозначают ребро из вершины ai в вершину
bi
, на котором написан символ ci (1 6 ai
, bi 6 n).
Формат выходных данных
Выведите одно число — искомое количество стартовых состояний.
Система оценки
за каждую подзадачу начисляются только в случае, если все тесты для этой подзадачи
и необходимых подзадач успешно пройдены.
Подзадача Ограничения Необходимые
подзадачи
Информация
о проверке
1 12 n, m 6 10 первая ошибка
2 21 n, m 6 100 1 первая ошибка
3 22 ci = ‘a’ первая ошибка
4 22 Граф является ациклическим первая ошибка
5 23 Без дополнительных ограничений 1–4 первая ошибка
Примеры
стандартный ввод стандартный вывод
3 3
1 2 a
2 3 b
3 1 c
6
5 10
2 2 c
3 5 b
5 4 b
2 3 b
3 5 c
3 1 b
4 2 a
4 4 a
2 4 b
2 5 c
15
Замечание
В первом примере, если изначально токены Ви и ИИ стоят в одной и той же вершине, процесс
никогда не завершится. Во всех остальных случаях, взлом будет успешным.

👇
Открыть все ответы
Ответ:
Эта автоматически тебе всё сделает.
Var i, n, max : Integer;
     a : array [1..30] of Integer;
 begin
    for i := 1 to 30 do
 begin
      Write('a[', i, ']='); 
      a[i]:=i+1;
      if max<a[i] then max:=a[i];
      writeln(a[i]);
end;
  writeln('Максимальный элемент равен: ',max);
end.

Если нужно будет ввести последовательность с клавиатуры, то вот:
Var i, n, max : Integer;
     a : array [1..30] of Integer;
 begin
    for i := 1 to 30 do
 begin
      Write('a[', i, ']='); 
      ReadLn (a[i]);
      if max<a[i] then max:=a[i];
end;
  writeln('Максимальный элемент равен: ',max);
end.
4,4(38 оценок)
Ответ:
visaenko1974
visaenko1974
19.11.2021
Program chik;
var a:array[1..100,1..100]of integer;
n,m,i,j:integer;
begin
readln(n,m);
for i:=1 to n do
for j:=1 to m do
read(a[i,j]);
for i:=1 to n do
for j:=m downto 1 do
if(a[i,j] mod 2=0)then a[i,j]:=a[i,j]+a[i,1];
for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j],' ');
writeln;
end;
end.
n,m-размеры матрицы
a[i,j]-элементы матрицы
пример
n=3 m=3
1 2 3
4 5 6
7 8 9

вывод:
1 3 3 
8 5 10
7 15 9 
a[1,2]:=a[1,2]+a[1,1]=2+1=3
a[2,1]:=a[2,1]+a[2,1]=4+4=8
..
но чтобы первый элемент строки не изменился перед тем как нам нужно будет проверит другие элементы поэтому for j:=m downto 1 
делаем т.е с конца строки проверяем чтобы первый эл.строки матрицы не изменилась
Надеюсь всё понятно
4,5(50 оценок)
Новые ответы от MOGZ: Информатика

MOGZ ответил

Полный доступ к MOGZ
Живи умнее Безлимитный доступ к MOGZ Оформи подписку
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ