Cod sursa(job #1650028)

Utilizator HoustainFlorin Diaconescu Houstain Data 11 martie 2016 16:13:52
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
#define dimmax 5001
#define infinit 1 << 31
using namespace std;

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

int a[dimmax][dimmax];
int n,m,x,y,i,startx,starty,c;

void Read()
{
    fin>>n>>m;
    fin>>startx>>starty>>c;
    a[startx][starty]=c;
    for (i=2; i<=m; i++)
    {
        fin>>x>>y>>c;
        a[x][y]=c;
    }

}

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

int main()
{
    Read();
    RW();
    for (i=1; i<=n; i++)
        if (a[startx][i]>0) fout<<a[startx][i]<<" ";
    return 0;
}