Pagini recente » Cod sursa (job #352308) | Istoria paginii utilizator/natalia00 | Cod sursa (job #2022148) | Diferente pentru monthly-2012/runda-9/solutii intre reviziile 15 si 28 | Cod sursa (job #956874)
Cod sursa(job #956874)
#include<fstream>
using namespace std;
int a[101][101], n, i, j, k, aux;
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
void citire()
{
fin >> n;
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
fin >> a[i][j];
}
void warshall_floyd()
{
for(k = 0; k < n; k++)
{
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
if(a[i][k] && a[k][j] && i != j)
{
aux = a[i][k] + a[k][j];
if(a[i][j] > aux || a[i][j] == 0) // sau nu exista muchie (cazul in care e pe diagonala e eliminat)
a[i][j] = aux;
}
}
}
}
}
void afis()
{
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
fout << a[i][j] << " ";
fout << endl;
}
}
int main()
{
citire();
warshall_floyd();
afis();
return 0;
}