Cod sursa(job #2521698)

Utilizator VlaskovKovac Vlastimil Vlaskov Data 11 ianuarie 2020 12:53:52
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.7 kb
// ConsoleApplication4.cpp : This file contains the 'main' function. Program execution begins and ends there.
//

//#include <iostream>
#include <fstream>

int n, mat[101][101];

using namespace std;

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

void Read();
void FloydWarshall();
void Write();

int main()
{
    Read();
    FloydWarshall();
    Write();
}

void Read()
{
    fin >> n;
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
            fin >> mat[i][j];
    }
}

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

void Write()
{
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
        {
            fout << mat[i][j] << ' ';
        }
        fout << '\n';
    }
}

// Run program: Ctrl + F5 or Debug > Start Without Debugging menu
// Debug program: F5 or Debug > Start Debugging menu

// Tips for Getting Started: 
//   1. Use the Solution Explorer window to add/manage files
//   2. Use the Team Explorer window to connect to source control
//   3. Use the Output window to see build output and other messages
//   4. Use the Error List window to view errors
//   5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project
//   6. In the future, to open this project again, go to File > Open > Project and select the .sln file