Pagini recente » Cod sursa (job #1605856) | Cod sursa (job #2738158) | Cod sursa (job #744614) | Cod sursa (job #2738595) | Cod sursa (job #885348)
Cod sursa(job #885348)
#include <iostream>
#include <fstream>
using namespace std;
int i,j,k,n;
int Drum[101][101];
void roy_floyd()
{
for (k = 1; k <= n; k++)
for (i = 1; i <= n; i++)
for (j = 1; j <= n; j++)
//daca exista drum care sa treaca prin k si Drum[i][j] > drumul care trece prin K sau nu exista Drum[i][j]
//si i!=j (pentru a nu fi acelasi nod,rezultand astfel cicluri)
if (Drum[i][k] && Drum[k][j] && (Drum[i][j] > Drum[i][k] + Drum[k][j] || !Drum[i][j]) && i != j)
Drum[i][j] = Drum[i][k] + Drum[k][j];
}
int main()
{
ifstream in("royfloyd.in");
ofstream out("royfloyd.out");
in>>n;
//citire matrice
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
in>>Drum[i][j];
roy_floyd();
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
out<<Drum[i][j]<<" ";
out<<"\n";
}
return 0;
}