Cod sursa(job #1970857)

Utilizator Vlad_lsc2008Lungu Vlad Vlad_lsc2008 Data 19 aprilie 2017 17:36:23
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define fin "dijkstra.in"
#define fou "dijkstra.out"
#define inf 100000000
using namespace std;
ifstream t1(fin);
ofstream t2(fou);
int n,m,d[50001];

class comp
{
public:
    bool operator()(int a,int b)
    {
        return d[a]>d[b];
    }
};

vector < pair<int,int> > g[50001];
priority_queue<int,vector<int>,comp> c;

int main()
{
    int i,nod1,nod2,cost,x,z;
    t1>>n>>m;
    for(i=1;i<=m;i++)
    {
        t1>>nod1>>nod2>>cost;
        g[nod1].push_back(make_pair(nod2,cost));
    }
    for(i=2;i<=n;i++) d[i]=inf;
    c.push(1);
    while(!c.empty())
    {
        x=c.top();
        c.pop();
        for(i=0;i<g[x].size();i++)
            if(d[g[x][i].first]>d[x]+g[x][i].second)
            {
                d[g[x][i].first]=d[x]+g[x][i].second;
                c.push(g[x][i].first);
            }
    }
    for(i=2;i<=n;i++)
        if(d[i]!=inf) t2<<d[i]<<' ';
                 else t2<<'0'<<' ';
    t2<<'\n';
    t1.close();
    t2.close();
    return(0);
}
}