4. 14
9. 5
Объяснение:
4. построим граф (картинка 1) или дерево (картинка 2, вычеркнуты пути, которые не приводят в D)
По ним видно, что добраться из A в F через D можно 2 путями, посчитаем их длину
ADF = 10 + 5 = 15
ABDF = 5 + 4 + 5 = 14
Длина кратчайшего пути между пунктами A и F, проходящий через пункт D, равна 14
9. картинка 3
Т.к. по условию нам нужны пути не проходящих через город D, то вычеркнем все пути ведущие в D (AD) и из него (DG и DE)
Начала пути (A) всегда 1 путь
A = 1
Дальнейшее количество путей - сумма от входящих путей (стрелочек).
Вычеркнутые пути НЕ считаем.
B = A = 1
E = A = 1 (DE вычеркнут)
и т.д.
Существует 5 различных путей из города A в город H, не проходящих через город D


#include <vector>
using namespace std;
int main()
{
// Я буду использовать вектор, можешь просто использовать массив
vector<vector<int>> matrix = { {0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0}};
// Мы создали массив, я назвал его matrix, теперь будем его заполнять.
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < 5; j++)
{
int chislo;
cin >> chislo;
matrix[i][j] = chislo;
}
}
// Мы его заполнили теперь будем переворачивать
for (int i = 0; i < 3; i++)
{
if (i != 2){
for (int j = 0; j < 5; j++)
{
int chislo1 = matrix[i][j];
int chislo2 = matrix[4 - i][4 - j];
matrix[i][j] = chislo2;
matrix[4 - i][4 - j] = chislo1;
}
}
// Здесь строка по середине.
else
{
int chislo1 = matrix[2][0];
int chislo2 = matrix[2][4];
matrix[2][0] = chislo2;
matrix[2][4] = chislo1;
chislo1 = matrix[2][1];
chislo2 = matrix[2][3];
matrix[2][1] = chislo2;
matrix[2][3] = chislo1;
}
}
return 0;
}
ввод:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
вывод:
25 24 23 22 21
20 19 18 17 16
15 14 13 12 11
10 9 8 7 6
5 4 3 2 1