#include "stdafx.h"
#include <stdio.h>
#include <math.h>
#include <conio.h>
int i, j, k, c, n, min, ras, p;
int A[10][10];
int C[10][10];
int B[10][10];
void A_null(int n) // обнуление и печать матрицы А
{
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
{
if (i == j) { A[i][j] = 0; }
else { A[i][j] = 32000; };
};
};
}
void A_conj(int n) // матрица смежности исходного графа записанная в А
{
while ((i != 0) || (j != 0) || (k != 0))
{
scanf("%i%i%i", &i, &j, &k);
if (k != 0) A[i][j] = k;
if (k == 0) A[i][j] = 32000;
};
}
void AB1(int n) // умножение матрицы А на В один раз и запись результата в С
{
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
{
min = 32000;
for (k = 1; k <= n; k++)
if (A[i][k] + B[k][j] <= min)
{
C[i][j] = A[i][k] + B[k][j];
min = C[i][j];
};
};
};
}
void AB_C(int n)
{
for (i = 1; i <= n; i++) // обнулить матрицу С и напечатать
{
for (j = 1; j <= n; j++)
{
C[i][j] = 0;
};
};
for (i = 1; i <= n; i++) // заполнить матрицу В значениями матрицы А и напечатать
{
for (j = 1; j <= n; j++)
{
B[i][j] = A[i][j];
};
};
AB1(n);
}
void main()
{
printf("n: ");
scanf("%i", &n);
printf("<v1,v2>: \n");
A_null(n);
A_conj(n);
AB_C(n); printf("\n");
ras = n - 1; //количество перемножений матриц А на В (н-1 степень)
for (p = 2; p <= ras; p++)
{
AB1(n);
for (i = 1; i <= n; i++) // заполнить матрицу A значениями матрицы C и напечатать
{
for (j = 1; j <= n; j++)
A[i][j] = C[i][j];
};
};
for (i = 1; i <= n; i++) // напечатать матрицу С
{
for (j = 1; j <= n; j++)
printf("%i ", C[i][j]);
printf("\n");
};
getch();
}
Be the first to comment
You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.