Cod sursa(job #818840)

Utilizator SteveStefan Eniceicu Steve Data 18 noiembrie 2012 09:14:31
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.33 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <cmath>
#include <iomanip>
#include <string>
#include <cstring>
#include <deque>
#include <stack>
#include <bitset>
#include <list>
#define pb push_back
#define pf push_front
#define pob pop_back
#define pof pop_front
#define mp(a,b) make_pair (a, b)
#define ll long long
#define max(a, b) (a > b ? a : b)
#define min(a, b) (a < b ? a : b)

using namespace std;

int main ()
{
    int N;
    int mat[101][101];
    ifstream fin ("royfloyd.in");
    ofstream fout ("royfloyd.out");
    fin >> N;
    for (int i = 1; i <= N; i++)
    {
        for (int j = 1; j <= N; j++)
        {
            fin >> mat[i][j];
            if (!mat[i][j]) mat[i][j] = 1000000000;
            if (i == j) mat[i][j] = 0;
        }
    }
    fin.close ();
    for (int k = 1; k <= N; k++)
        for (int i = 1; i <= N; i++)
            for (int j = 1; j <= N; j++)
                if (i != k && i != j && j != k && mat[i][k] + mat[k][j] < mat[i][j]) mat[i][j] = mat[i][k] + mat[k][j];
    for (int i = 1; i <= N; i++)
    {
        for (int j = 1; j <= N; j++)
            fout << (mat[i][j] < 1000000000 ? mat[i][j] : 0) << " ";
        fout << "\n";
    }
    fin.close ();
    fout.close ();
    return 0;
}