Cod sursa(job #1766699)

Utilizator filip.mihalutMihalut Filip filip.mihalut Data 28 septembrie 2016 13:48:11
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#include <iostream>
#include <fstream>
#include <cstring>

using namespace std;

ifstream f ("rf.in");
ofstream g ("rf.out");

int a[260][260],i,j,n,m,x,y,k,q,poz,b[260][260];

void roy()
{
    for(i = 1; i <= n; i++)
        for(j = 1; j <= n; j++)
            if(i != j)
                b[i][j] = 1;
    for(k = 1; k <= n; k++)
        for(i = 1; i <= n; i++)
            for(j = 1; j <= n; j++)
                if((a[i][k] && a[k][j]) || !a[i][j])
                {
                    if(a[i][k] + a[k][j] == a[i][j])
                        b[i][j] = max(b[i][j] , b[i][k] + b[k][j]);
                    if(a[i][k] + a[k][j] < a[i][j])
                        a[i][j] = a[i][k] + a[k][j],b[i][j] =  max(b[i][j] , b[i][k] + b[k][j]);
                }
}

int main()
{
    f >> n;
    for(i = 1; i <= n; i++)
        for(j = 1; j <= n; j++)
            f >> a[i][j];
    roy();
    for(i = 1; i <= n; i++)
    {
        for(j = 1; j <= n; j++)
            g << a[i][j] <<" ";
        g << '\n';
    }
    for(i = 1; i <= n; i++)
    {
        for(j = 1; j <= n; j++)
            g << b[i][j] <<" ";
        g << '\n';
    }
}