Pagini recente » Cod sursa (job #3260178) | Cod sursa (job #2220541) | Rating AndreiRob (Andr31R0B) | Cod sursa (job #2456831) | Cod sursa (job #2456600)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void royfloyd(int*** rez,int N)
{
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= N; j++)
{
for (int k = 1; k <= N; k++)
{
if ((*rez)[j-1][k-1] > (*rez)[j-1][i-1] + (*rez)[i-1][k-1])
{
(*rez)[j - 1][k - 1] = (*rez)[j - 1][i - 1] + (*rez)[i - 1][k - 1];
}
}
}
}
}
int main()
{
FILE* fp = fopen("royfloyd.in", "r");
FILE* fout = fopen("royfloyd.out", "w");
int N;
fscanf(fp, "%d", &N);
int** mat_ponderi = new int* [N];
int** mat_drumuri = new int* [N];
for (int i = 0; i < N; i++)
{
mat_ponderi[i] = new int[N];
mat_drumuri[i] = new int[N];
}
for(int i=0;i<N;i++)
for (int j = 0; j < N; j++)
{
fscanf(fp, "%d", &mat_ponderi[i][j]);
}
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
if (mat_ponderi[i][j] == 0)
{
mat_drumuri[i][j] = 1001;
}
else
{
mat_drumuri[i][j] = mat_ponderi[i][j];
}
if (i == j)
mat_drumuri[i][j] = 0;
}
}
royfloyd(&mat_drumuri, N);
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
fprintf(fout,"%d ", mat_drumuri[i][j]);
}
fprintf(fout, "\n");
}
return 0;
}