Cod sursa(job #1442718)

Utilizator onica.alexandraOnica Ioana-Alexandra onica.alexandra Data 26 mai 2015 08:20:43
Problema Algoritmul lui Dijkstra Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include<iostream>
#include<fstream>
#include<vector>
#include<set>
using namespace std;
vector<int>M[50001],C[50001];
int d[50001],n,m;
set< pair<int,int> >P;
#define INF 10000000
void dijkstra()
{
    int i,cost,nod;
    for(i=2; i<=n; i++) d[i]=INF;
    P.insert(make_pair(0,1));
    while(P.size()>0)
    {
        cost=(*P.begin()).first;
        nod=(*P.begin()).second;
        P.erase(*P.begin());
        for(i=0; i<M[nod].size(); i++)
            if(d[M[nod][i]]>cost+C[nod][i])
                {
                    d[M[nod][i]]=cost+C[nod][i];
                    P.insert(make_pair(d[M[nod][i]],M[nod][i]));
            }
    }
}
int main()
{
    int x,y,c,i;
    ifstream f("dijkstra.in");
    f>>n>>m;
    for(i=1; i<=m; i++)
        {
            f>>x>>y>>c;
            M[x].push_back(y);
            C[x].push_back(c);
    }
    f.close();
    dijkstra();
    ofstream g("dijkstra.out");
    for(i=2; i<=n; i++)
        if(d[i]==INF)
        g<<0<<" ";
        else g<<d[i]<<" ";
    g.close();
    return 0;
}