Cod sursa(job #2035479)

Utilizator RaduXD1Nicolae Radu RaduXD1 Data 9 octombrie 2017 15:05:48
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <fstream>
#include <queue>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
vector<pair <int, int> > v[50003];
priority_queue< pair<int, int> , vector<pair<int, int> >, greater<pair<int, int> > > q;
int n, m, i, a, b, c, cost, el , d[50003];

int main()
{
    fin>>n>>m;
    for(i=1;i<=m;i++)
    {
        fin>>a>>b>>c;
        v[a].push_back(make_pair(b, c));
    }
    for(i=0;i<v[1].size();i++)
        q.push(make_pair(v[1][i].second, v[1][i].first));
    for(i=1;i<=n;i++)
        d[i]=10000000;
    d[1]=-10000000;
    while(q.size()>0)
    {
        cost=q.top().first;
        el=q.top().second;
        q.pop();
        if(d[el]>cost)
        {
            for(i=0;i<v[el].size();i++)
                q.push(make_pair(v[el][i].second+cost, v[el][i].first));
            d[el]=cost;
        }
    }
    for(i=2;i<=n;i++)
    {
        if(d[i]==10000000)
            fout<<0<<" ";
        else
            fout<<d[i]<<" ";
    }
    fin.close();
    fout.close();
    return 0;
}
//cablaj, algoritmul lui daikjaj + scriere cu heapuri;