Pagini recente » Cod sursa (job #2341332) | Cod sursa (job #2998977) | Cod sursa (job #1199893) | Cod sursa (job #1503955) | Cod sursa (job #634506)
Cod sursa(job #634506)
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
#define maxn 101
#define inf 1011
int N, C[maxn][maxn], D[maxn][maxn], Urm[maxn][maxn];
void royfloyd(void)
{
int i,j,k;
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
if(C[i][j] && C[i][j]!=inf) Urm[i][j]=j;
else Urm[i][j]=0;
memcpy(D,C,sizeof(C));
for(k=1;k<=N;k++)
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
if(D[i][j]>D[i][k]+D[k][j])
{
D[i][j]=D[i][k]+D[k][j];
Urm[i][j]=Urm[i][k];
}
}
int main (void)
{
freopen("royfloyd.in","r",stdin);
scanf("%d",&N);
for(int i=1;i<=N;i++)
for(int j=1;j<=N;j++)
scanf("%d",&C[i][j]);
royfloyd();
freopen("royfloyd.out","w",stdout);
for(int i=1;i<=N;i++)
{for(int j=1;j<=N;j++) printf("%d ",D[i][j]);
printf("\n");}
return 0;
}