Cod sursa(job #2096676)

Utilizator omegasFilip Ion omegas Data 29 decembrie 2017 16:26:07
Problema Floyd-Warshall/Roy-Floyd Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <fstream>

using namespace std;

int a[101][101];
int s[101][101][101];
int n;

void solve(int k)
{
    if(k==0)
    {
    int p,q;
    for(p=1;p<=n;++p)
        for(q=1;q<=n;++q)
        s[0][p][q]=a[p][q];
    }

    if(k >= 1)
    {
        solve(k-1);
        int i,j;
        for(i=1;i<=n;++i)
        for(j=1;j<=n;++j)
            if(s[k-1][i][j]<s[k-1][i][k]+s[k-1][k][j])
                s[k][i][j]=s[k-1][i][j];
            else
                s[k][i][j]=s[k-1][i][k]+s[k-1][k][j];
    }
}

int main()
{
    ifstream fin("royfloyd.in");
    ofstream fout("royfloyd.out");

    int i,j,k;
    fin >> n;
    for(i=1;i<=n;++i)
    for(j=1;j<=n;++j)
    fin >> a[i][j];

    int t=n;
    solve(t);

    for(i=1;i<=n;++i)
    {
    for(j=1;j<=n;++j)
    fout << s[t][i][j] <<" ";
    fout << "\n";
    }



    return 0;
}