Pagini recente » Cod sursa (job #1959555) | Cod sursa (job #2209308) | Cod sursa (job #759132) | Cod sursa (job #515308) | Cod sursa (job #348322)
Cod sursa(job #348322)
// infoarena
// pb: Floyd-Warshall/Roy-Floyd
// O(n^3)
#include <iostream>
#include <fstream>
using namespace std;
short n;
short a[101][101];
void read()
{
fstream f("royfloyd.in", ios::in);
f>>n;
for (short i=1; i<=n; ++i)
for (short j=1; j<=n; ++j)
f>>a[i][j];
}
void solve()
{
for (short i=1; i<=n; ++i)
for (short j=1; j<=n; ++j)
if (i!=j)
for (short k=1; k<=n; ++k)
if (a[i][j]!=0)
{
if (a[i][j]!=0 && a[j][k]!=0 && a[i][j]>a[i][k]+a[k][j])
a[i][j]=a[i][k]+a[k][j];
}
else
if (a[i][k]!=0 && a[k][j]!=0 && i!=j && j!=k)
a[i][j]=a[i][k]+a[k][j];
fstream g("royfloyd.out", ios::out);
for (short i=1; i<=n; ++i)
{
for (short j=1; j<=n; ++j)
g<<a[i][j]<<" ";
g<<"\n";
}
}
int main()
{
read();
solve();
return 0;
}