Pagini recente » Cod sursa (job #2605482) | Cod sursa (job #1222670) | Cod sursa (job #3041812) | Cod sursa (job #763924) | Cod sursa (job #2074462)
#include<stdio.h>
#include<stdlib.h>
using namespace std;
void citire(int *** mat, int * n)
{
FILE * fin = fopen("royfloyd.in","r");
fscanf(fin,"%d",n);
(*mat)=(int **)malloc((*n)*sizeof(int *));
for(int i=0;i<*n;i++)
{
(*mat)[i]=(int *)malloc((*n)*sizeof(int));
for(int j=0;j<*n;j++)
fscanf(fin,"%d",&((*mat)[i][j]));
}
}
int minim(int a, int b)
{
if(a<b)
return a;
return b;
}
void pinkFloyd(int *** mat, int n)
{
for(int k=0;k<n;k++)
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if((*mat)[i][k]!=0 && (*mat)[k][j]!=0)
(*mat)[i][j]=minim((*mat)[i][j],(*mat)[i][k]+(*mat)[k][j]);
}
void afisare(int ** mat, int n)
{
FILE * fout = fopen("royfloyd.out","w");
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
fprintf(fout,"%d ",mat[i][j]);
fprintf(fout,"\n");
}
}
int main()
{
int ** mat,n;
citire(&mat,&n);
pinkFloyd(&mat,n);
afisare(mat,n);
return 0;
}