Cod sursa(job #1483045)

Utilizator dec0o0dinu pinu dec0o0 Data 8 septembrie 2015 16:36:03
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
//
//  main.cpp
//  royfloyd
//
//  Created by mac-mac on 9/8/15.
//  Copyright (c) 2015 mac-mac. All rights reserved.
//

#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

int main(int argc, const char * argv[]) {
    
    ifstream cin("royfloyd.in");
    ofstream cout("royfloyd.out");
    
    int n;
    cin >> n;
    
    vector<vector<int> > m(n, vector<int>(n));
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            cin >> m[i][j];
    
    for (int k = 0; k < n; k++)
        for (int i = 0; i < n; i++)
            for (int j = 0; j < n; j++)
                if (i != j &&
                    m[i][k] &&
                    m[k][j] &&
                    (m[i][j] > m[i][k] + m[k][j] ||
                     !m[i][j])
                    )
                    m[i][j] = m[i][k] + m[k][j];

    
    for (int i = 0; i < n; i++){
        for (int j = 0; j < n; j++)
            cout << m[i][j] << ' ';
        cout << '\n';
    }
    
    cin.close();
    cout.close();
    
    return 0;
}