Cod sursa(job #1362668)

Utilizator arctosUrsu Cristi arctos Data 26 februarie 2015 14:24:46
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <stdio.h>
#include <algorithm>
#include <vector>
#define INF 0x3f3f3f3f
#define NMAX 101
using namespace std;
int i,j,m,n,min1,min2,a[NMAX][NMAX];
vector <int> T[NMAX];
vector <int>::iterator it;
void roy()
{
    int i,j,k;
    for(k=1;k<n+1;k++)
         for(i=1;i<n+1;i++)
             for(j=1;j<n+1;j++)
                 if(a[i][j]&&a[k][j]&&(a[i][j]>a[k][j]+a[i][k]||!a[i][j])&&i!=j) a[i][j]=a[k][j]+a[i][k];

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