Cod sursa(job #1250049)

Utilizator rebound212Mihnea Savu rebound212 Data 27 octombrie 2014 19:35:27
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include <vector>
#include <set>
#include <algorithm>
#include <cctype>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <cstring>
#include <string>
#include <cstdio>
#include <climits>

#define PII pair < int , int >
#define MP make_pair
#define PB push_back
#define F first
#define S second
#define LL long long
#define NMAX 20
using namespace std;
int a[101][101],i,j,q,n;
int main()
{
    freopen("royfloyd.in","r",stdin);
    freopen("royfloyd.out","w",stdout);
    scanf("%d\n",&n);
    for(i=1; i<=n; i++)
    {
        for(j=1; j<=n; j++)
        {
            scanf("%d",&a[i][j]);
        }
    }
    for(q=1; q<=n; q++)
    {
        for(i=1; i<=n; i++)
        {
            for(j=1; j<=n; j++)
            {
                 if(a[i][j]==0 || a[i][j]>a[i][q]+a[q][j])
                 {
                     if(a[i][q]!=0 && a[q][j]!=0 && i!=j)
                     {
                         a[i][j]=a[i][q]+a[q][j];
                     }
                 }
            }
        }
    }
    for (i=1; i<=n; i++)
    {
        for (j=1; j<=n; j++)
        {
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}