Pagini recente » Cod sursa (job #1939117) | Cod sursa (job #2526960) | Cod sursa (job #2362381) | Cod sursa (job #1521961) | Cod sursa (job #1111195)
#include <iostream>
#include <fstream>
using namespace std;
int n;
int mat[257][257], pasi[257][257];
void rf()
{
int i,j,k;
for(k=1; k<=n; k++)
{
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
if(i!=j)
if(mat[i][k]!=0 && mat[k][j]!=0)
{
if(mat[i][k]+mat[k][j]==mat[i][j])
if(pasi[i][k]+1>pasi[i][j])
pasi[i][j]=pasi[i][k]+1;
if(mat[i][k]+mat[k][j]<mat[i][j] || mat[i][j]==0)
{
mat[i][j]=mat[i][k]+mat[k][j];
pasi[i][j]=pasi[i][k]+1;
}
}
}
}
}
}
int main()
{
int i,j;
ifstream in("royfloyd.in");
in>>n;
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
{
in>>mat[i][j];
if(mat[i][j])
pasi[i][j]=1;
}
rf();
ofstream out("royfloyd.out");
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
out<<mat[i][j]<<" ";
out<<endl;
}
//for(i=1; i<=n; i++)
// {
// for(j=1; j<=n; j++)
// out<<pasi[i][j]<<" ";
// out<<endl;
// }
out.close();
return 0;
}