Cod sursa(job #1424258)

Utilizator SpiriFlaviuBerbecariu Flaviu SpiriFlaviu Data 23 aprilie 2015 19:57:58
Problema Floyd-Warshall/Roy-Floyd Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.26 kb
#include <iostream>
#include <vector>
#include <set>
#include <queue>
#include <algorithm>
#include <string>
#include <fstream>
#include <cctype>
#include <iomanip>
#include <cmath>
#include <cstring>
#include <map>
#include <bitset>
#include <stack>
/*  //c++11
#include <unordered_map>
#include <unordered_set>
#include <tuple>
*/

using namespace std;

ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");

int a[101][101];
int d[101][101];

int main()
{
    //freopen("1.in","r",stdin);
    //freopen("1.out","w",stdout);
    int n;
    fin>>n;

    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= n; j++)
        {
            fin>>a[i][j];
            d[i][j] = 1<<29;
            if(a[i][j])
                d[i][j] = a[i][j];

        }
    for(int k = 1; k <= n; k++)
        for(int i = 1; i <= n; i++)
            for(int j = 1; j <= n; j++)
                if(a[i][k] && a[k][j] && i != j && i != k && j != k)
                    d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= n; j++)
            if(d[i][j] != (1<<29))
                fout<<d[i][j]<<' ';
            else fout<<0<<' ';
        fout<<'\n';
    }
    return  0;

}


//FILE!!!