Cod sursa(job #485168)

Utilizator andra23Laura Draghici andra23 Data 17 septembrie 2010 13:47:23
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include<iostream>
#include<fstream>
#define maxn 105
#define dmax 500000000

using namespace std;

int a[maxn][maxn];

int main(){
    ifstream f("royfloyd.in");
    ofstream g("royfloyd.out");
    int n, x;
    f>>n;
    int i, j, k;
    for (i = 1; i <= n; i++)
        for (j = 1; j <= n; j++){
            f>>x;
            if (x == 0 && i != j)
                a[i][j] = dmax;
            else 
                a[i][j] = x;    
        }
    
    for (k = 1; k <= n; k++)
        for (i = 1; i <= n; i++)
            for (j = 1; j <= n; j++) {
                if (a[i][j] > a[i][k] + a[k][j]){
                    a[i][j] = a[i][k] + a[k][j];   
                }
            }      
    for (i = 1; i <= n; i++){
        for (j = 1; j <= n; j++)
            if (a[i][j] == dmax)
                g<<0<<" ";
            else
                g<<a[i][j]<<" ";
        g<<'\n';
    }
    
    return 0;
}