Cod sursa(job #1579891)

Utilizator Balescu_OvidiuBalescu Ovidiu-Gheorghe Balescu_Ovidiu Data 25 ianuarie 2016 10:35:29
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <stdio.h>
#include <stdlib.h>

struct graf{
    short n;
    unsigned **a;
}G;

int main(){
    FILE*f=fopen("royfloyd.in","r");
    fscanf(f,"%hd",&G.n);
    G.a=(unsigned**)malloc(sizeof(unsigned)*G.n);
    for(short i=0;i<G.n;i++){
        G.a[i]=(unsigned*)malloc(sizeof(unsigned)*G.n);
        for(short j=0;j<G.n;j++)
            fscanf(f,"%u",&G.a[i][j]);
    }
    fclose(f);
    for(short k=0;k<G.n;k++)
        for(short i=0;i<G.n;i++)
            for(short j=0;j<G.n;j++)
                if(G.a[i][k]&&G.a[k][j]&&(G.a[i][j]>G.a[i][k]+G.a[k][j]||!G.a[i][j])&&i!=j)
                    G.a[i][j]=G.a[k][j]+G.a[i][k];
    FILE*h=fopen("royfloyd.out","w");
    for(short i=0;i<G.n;i++){
        for(short j=0;j<G.n;j++)
            fprintf(h,"%u ",G.a[i][j]);
        fprintf(h,"\n");
    }
    fclose(h);
    return 0;
}