Pagini recente » Cod sursa (job #1724753) | Cod sursa (job #1054595) | Cod sursa (job #2634391) | Cod sursa (job #2945389) | Cod sursa (job #1703573)
#include <fstream>
using namespace std;
void print(int n, int* d, ofstream &out)
{
for(int i=0;i<n;++i)
{
for(int j=0;j<n;++j)
{
out << d[i*n+j] << " ";
}
out << "\n";
}
}
int main()
{
ifstream in("rf.in");
ofstream out("rf.out");
int n;
in >> n;
int *d = new int[n*n];
int *mr = new int[n*n];
for(int i=0;i<n;++i)
{
for(int j=0;j<n;++j)
{
in >> d[i*n+j];
mr[i*n+j] = ((i!=j)?1:0);
}
}
for(int k=0;k<n;++k)
{
for(int i=0;i<n;++i)
{
for(int j=0;j<n;++j)
{
if(i!=j && d[i*n+k] + d[k*n+j] == d[i*n+j])
{
if(mr[i*n+j] < mr[i*n+k] + mr[k*n+j])
mr[i*n+j] = mr[i*n+k] + mr[k*n+j];
}
if(i!=j && d[i*n+k] > 0 && d[k*n+j] > 0 && (d[i*n+k] + d[k*n+j] < d[i*n+j] || d[i*n+j] == 0))
{
d[i*n+j] = d[i*n+k] + d[k*n+j];
mr[i*n+j] = mr[i*n+k] + mr[k*n+j];
}
}
}
}
//print(n,d,out);
//print(n,mr,out);
for(int i=0;i<n;++i)
{
for(int j=0;j<n;++j)
{
out << d[i*n+j] << " ";
}
out << "\n";
}
for(int i=0;i<n;++i)
{
for(int j=0;j<n;++j)
{
out << mr[i*n+j] << " ";
}
out << "\n";
}
return 0;
}