Cod sursa(job #456232)

Utilizator carbonixVictor Carbune carbonix Data 15 mai 2010 00:19:42
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1.31 kb
/*
 * =====================================================================================
 *
 *       Filename: fw.cpp
 *
 *    Description: Lab 8, Proiectarea Algoritmilor
 *
 *         Author:  Victor Carbune ([email protected])
 *	     Info:  Grupa 325, Seria CA
 *
 * =====================================================================================
 */
#include <fstream>
#include <vector>
#include <queue>
#include <algorithm>

#define INF 1000000
#define MAXN 50010

using namespace std;

int mat[100][100];
int n, m, *d;

ifstream in("royfloyd.in", ifstream::in);
ofstream out("royfloyd.out", ofstream::out);


void read_data()
{
    in >> n;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            in >> mat[i][j];
        }
    }
}


void fw()
{
    int i, j, k;
    for (int k = 0; k < n; k++)
        for (int i = 0; i < n; i++ ) {
            for (int j = 0; j < n; j++ ) {
                if (mat[i][k] && mat[k][j] && (mat[i][j] > mat[i][k] + mat[k][j] || !mat[i, j]) && i != j) {
                    mat[i][j] = mat[i][k] + mat[k][j];
                }
            }
        }
}




int main() {
    read_data();

    fw();

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            out << mat[i][j] << " ";
        }
        out << endl;
    }
    return 0;
}