Pagini recente » Cod sursa (job #1594144) | Cod sursa (job #2470291) | Atasamentele paginii Profil 134_tufa_liliana_ionela | Cod sursa (job #3123899) | Cod sursa (job #2822130)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("rf.in");
ofstream out("rf.out");
const int INF = 100001;
int n, i, j ,k, x;
int M1[260][260],M2[260][260];
void royfloyd()
{
for(k=1; k<=n; k++)
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
{
if(M1[i][j]>M1[i][k]+M1[k][j]||(M1[i][j]==M1[i][k]+M1[k][j] && M2[i][j]<M2[i][k]+M2[k][j]))
{
M1[i][j]=M1[i][k]+M1[k][j];
M2[i][j]=M2[i][k]+M2[k][j];
}
}
}
int main()
{
in>>n;
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
{
in>>M1[i][j];
if(i!=j)
M2[i][j] = 1;
else
M2[i][j] = 0;
}
royfloyd();
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
if(M1[i][j] == INF)
out<<0<<" ";
else
out<<M1[i][j]<<" ";
out<<"\n";
}
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
if(M2[i][j] == INF)
out<<0<<" ";
else
out<<M2[i][j]<<" ";
out<<"\n";
}
return 0;
}