Cod sursa(job #1725194)

Utilizator radoneNeacsu Radu-Stefan radone Data 5 iulie 2016 10:19:31
Problema Traseu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.39 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream f("traseu.in");
ofstream g("traseu.out");

int a[61][61], b[61][61], n, m, x, y, z, c[61][61];

int main()
{
    f >> n >> m;

    for( int i=1; i<=m; i++ )
    {
        f >> x >> y >> z;
        a[x][y] = z;
        b[x][y] = c[x][y] = 1;
    }

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

    int maxx = 1000000000;

    for( int i=1; i<=n; i++ )
        for( int j=1; j<=n; j++ )
            if( b[i][j] + b[j][i] >= m && a[i][j] + a[j][i] < maxx )
                maxx = a[i][j] + a[j][i];

    for( int i=1; i<=n; i++ )
    {
        for( int j=1; j<=n; j++ )
            g << a[i][j] << " ";
        g << '\n';
    }
    g << '\n';

    for( int i=1; i<=n; i++ )
    {
        for( int j=1; j<=n; j++ )
            g << b[i][j] << " ";
        g << '\n';
    }
    g << '\n';

    for( int i=1; i<=n; i++ )
    {
        for( int j=1; j<=n; j++ )
            g << c[i][j] << " ";
        g << '\n';
    }
    g << '\n';

    g << maxx;

    return 0;
}