Cod sursa(job #1279773)

Utilizator DragodanAlexandraDragodan Alexandra DragodanAlexandra Data 30 noiembrie 2014 21:12:41
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <iostream>
#include<cstdio>
#include<vector>

using namespace std;

int n,a[101][101];

void citire()
{
    int i,j,x;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
   {
        scanf("%d",&x);
       a[i][j]=x;
   }
}

void rezolvare()
{
    int k,i,j;
    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]>a[i][k]+a[k][j] || !a[i][j]) && i!=j) a[i][j]=a[i][k]+a[k][j];
}

void afisare()
{
    int i,j;
    for(i=1;i<=n;i++)
{
    for(j=1;j<=n;j++)
    printf("%d ",a[i][j]);
    printf("\n");
}
}

int main()
{
   freopen("royfloyd.in","r",stdin);
   freopen("royfloyd.out","w",stdout);
    citire();
    rezolvare();
    afisare();
    return 0;
}