Cod sursa(job #634509)

Utilizator yamahaFMI Maria Stoica yamaha Data 16 noiembrie 2011 16:33:16
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<iostream>
#include<stdio.h>
#include<string.h>

using namespace std;
#define maxn 101

int N, D[maxn][maxn];

void royfloyd(void)
{
     int i,j,k;
     for(k=1;k<=N;k++)
        for(i=1;i<=N;i++)
           for(j=1;j<=N;j++)
              if (D[i][k] && D[k][j] && (D[i][j] > D[i][k] + D[k][j] || !D[i][j]) && i != j) 
                 D[i][j] = D[i][k] + D[k][j];
}

int main (void)
{
    freopen("royfloyd.in","r",stdin);
    scanf("%d",&N);  
    for(int i=1;i<=N;i++)
       for(int j=1;j<=N;j++)
          scanf("%d",&D[i][j]); 
          
    royfloyd();
    
    freopen("royfloyd.out","w",stdout);
    for(int i=1;i<=N;i++)
       {for(int j=1;j<=N;j++) printf("%d ",D[i][j]);
        printf("\n");} 
    return 0;
}