Pagini recente » Cod sursa (job #819687) | Cod sursa (job #902412) | Cod sursa (job #2341967) | Cod sursa (job #1043699) | Cod sursa (job #796993)
Cod sursa(job #796993)
#include <iostream>
#include <fstream>
#define MAX 2000000000
using namespace std;
int n, a[105][105];
void Read()
{
ifstream fin("royfloyd.in");
fin >> n;
//cout << n << "\n";
for(int i=1; i<=n; i++)
{
for(int j = 1; j<=n; j++)
{
fin >> a[i][j];
if(a[i][j] == 0)
a[i][j] = MAX;
//cout << a[i][j] << " ";
}
//cout << "\n";
}
fin.close();
}
inline bool Diferit(int x, int y, int z)
{
return (x!=y && y!=z && x!=z);
}
void Solve()
{
for(int k=1; k<=n; k++)
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
if(a[i][k]!=MAX && a[k][j]!=MAX && (a[i][k]+a[k][j] < a[i][j]) && Diferit(i,j,k))
a[i][j] = a[i][k] + a[k][j];
}
void Write()
{
ofstream fout("royfloyd.out");
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
if(a[i][j] == MAX)
fout << 0 << " ";
else fout << a[i][j] << " ";
fout << "\n";
}
fout.close();
}
int main()
{
Read();
Solve();
Write();
return 0;
}