Pagini recente » Cod sursa (job #851627) | Cod sursa (job #888025) | Cod sursa (job #1559341) | Cod sursa (job #1098901) | Cod sursa (job #2325786)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <list>
using namespace std;
ifstream f("royfloyd.in");
ofstream g("royfloyd.out");
const int INF=1<<15;
int n;
int cost[101][101];
int w[101][101];
void royfloyd()
{
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
if(w[i][j])
cost[i][j]=w[i][j];
else
cost[i][j]=INF;
for(int i=1;i<=n;++i)
cost[i][i]=0;
for(int k=1;k<=n;++k)
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
if((i-j)*(j-k)*(i-k))
if(cost[i][j]>cost[i][k]+cost[k][j])
cost[i][j]=cost[i][k]+cost[k][j];
}
int main()
{
f>>n;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
f>>w[i][j];
royfloyd();
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
g<<cost[i][j]<<' ';
g<<endl;
}
return 0;
}