Cod sursa(job #862615)

Utilizator unudoitreiRusu Alexandru unudoitrei Data 22 ianuarie 2013 20:15:54
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int n,x[100][100];
int main(){
    freopen("royfloyd.in","rt",stdin);
    freopen("royfloyd.out","wt",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;++i)
        for(int j=1;j<=n;++j)
            scanf("%d", &x[i][j]);
    for(int k=1;k<=n;++k)
        for(int i=1;i<=n;++i)
            for(int j=1;j<=n;++j)
                if(i!=j&&i!=k&&j!=k&&x[i][k]!=0&&x[k][j]!=0)
                    if(x[i][j]==0)
                        x[i][j]=x[i][k]+x[k][j];
                    else
                        x[i][j]=min(x[i][j],x[i][k]+x[k][j]);
    for(int i=1;i<=n;++i){
        for(int j=1;j<=n;++j)
            printf("%d ",x[i][j]);
        printf("\n");
    }
    return 0;
}