Pagini recente » Cod sursa (job #585118) | Cod sursa (job #2352739) | Cod sursa (job #269576) | Cod sursa (job #2141205) | Cod sursa (job #348326)
Cod sursa(job #348326)
// 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 k=1; k<=n; ++k)
for (short j=1; j<=n; ++j)
if (i!=j && i!=k && j!=k)
if (a[i][j])
{
if (a[i][k] && a[k][j] && a[i][j]>a[i][k]+a[k][j])
a[i][j]=a[i][k]+a[k][j];
}
else
if (a[i][k] && a[k][j])
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;
}