Pagini recente » Cod sursa (job #2221863) | Cod sursa (job #638678) | Cod sursa (job #2125444) | Cod sursa (job #2479660) | Cod sursa (job #1616080)
#include <fstream>
#define NMAX 105
#define Inf 1000005
using namespace std;
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
int a[NMAX][NMAX], n;
void citire();
void afisare();
void floyd_warshall();
int main()
{
citire();
floyd_warshall();
afisare();
return 0;
}
void citire()
{
int i, j;
fin >> n;
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
{
fin >> a[i][j];
if(a[i][j] == 0)
a[i][j] = Inf;
}
}
void floyd_warshall()
{
int x, y, z;
for(z = 1; z <= n; z++)
for(x = 1; x <= n; x++)
for(y = 1; y <= n; y++)
if(a[x][y] > a[x][z] + a[z][y] && x != y)
a[x][y] = a[x][z] + a[z][y];
}
void afisare()
{
int i, j;
for(i = 1; i <= n; i++)
{
for(j = 1; j <= n; j++)
if(a[i][j] < Inf && i != j)
fout << a[i][j] << ' ';
else fout << 0 << ' ';
fout << '\n';
}
}
/*
#include <fstream>
using namespace std;
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
int n, a[105][105];
int main()
{
int i, j, k;
fin >> n;
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
fin >> a[i][j];
for(k = 1; k <= n; k++)
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
if(a[i][k] && a[k][j] && (a[i][j] > a[i][k] + a[k][j] || !a[i][j]) && i != j)
a[i][j] = a[i][k] + a[k][j];
for(i = 1; i <= n; i++)
{
for(j = 1; j <= n; j++)
fout << a[i][j] << ' ';
fout << '\n';
}
return 0;
}*/