Cod sursa(job #1576749)

Utilizator iulian_f2kGuraliuc Iulian iulian_f2k Data 22 ianuarie 2016 19:59:52
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
#define NMAX 105
#define Inf ((2<<29)-1)

using namespace std;
int M[NMAX][NMAX],N;

void read()
{
    scanf("%d", &N);
    for(int i=1; i<=N; i++)
        for(int j=1; j<=N; j++)
        {
            scanf("%d", &M[i][j]);
            if(M[i][j]==0 && i!=j)
                M[i][j]=Inf;
        }
}

int main()
{
    freopen("royfloyd.in","rt",stdin);
    freopen("royfloyd.out","wt",stdout);
    read();
    for(int k=1; k<=N; k++)
        for(int i=1; i<=N; i++)
            for(int j=1; j<=N; j++)

                if(i!=j)
                    if(M[i][k]+M[k][j]<M[i][j])
                        M[i][j]=M[i][k]+M[k][j];
    for(int i=1; i<=N; i++)
    {
        for(int j=1; j<=N; j++)
            if(M[i][j]!=Inf)
                cout<<M[i][j]<<' ';
            else
                cout<<"0 ";
        cout<<'\n';
    }



    return 0;
}