Cod sursa(job #1375234)

Utilizator sam09Muntean Sam sam09 Data 5 martie 2015 12:43:59
Problema Algoritmul lui Dijkstra Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
#define INF 2000000000
#define cout g
int nr,n,m,a[5001][5001],res[50000],lista[100000];
int i;
void BFS(int X)
{

    nr=1;
    int NOD,j,i;
    lista[nr]=X;
    for(j=1;j<=nr;++j)
    {
        NOD=lista[j];

        for(i=1;i<=n;++i)
        if(a[NOD][i]!=0)
        {

            if(res[i]>res[NOD]+a[NOD][i])
            {
            nr++;
            lista[nr]=i;
            res[i]=res[NOD]+a[NOD][i];
            }
        }
    }
}
int main()
{
    f>>n>>m;
    for(i=1;i<=n;++i) res[i]=INF;
    res[1]=0;
    for(i=1;i<=m;++i)
    {
        int x,y,z;
        f>>x>>y>>z;
        a[x][y]=z;
    }

    BFS(1);
    for(i=2;i<=n;++i)
    {
    if(res[i]==INF) cout<<0<<" ";
        else cout<<res[i]<<" ";
    }
    return 0;
}