Cod sursa(job #2044515)

Utilizator Tudor_CandeaCandea Tudor Tudor_Candea Data 21 octombrie 2017 10:47:23
Problema Algoritmul lui Dijkstra Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#include <vector>
#include <queue>
#include <climits>
using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");

struct memo
{
    int ter;
    int val;
}x;
struct use
{
    int dis=INT_MAX;
    vector <memo> v;
}d[50001];

queue <int> q;
int n, m;
int main()
{
    fin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        int a1;
        fin>>a1>>x.ter>>x.val;
        d[a1].v.push_back(x);
    }
    q.push(1);
    d[1].dis=0;

    while(!q.empty())
    {
        int nod=q.front();
        q.pop();
        for(int i=0;i<d[nod].v.size();i++)
        {
            if(d[nod].v[i].val+d[nod].dis<d[d[nod].v[i].ter].dis)
            {
                d[d[nod].v[i].ter].dis=d[nod].v[i].val+d[nod].dis;
                q.push(d[nod].v[i].ter);
            }
        }
    }
    for(int i=2;i<=n;i++)
    {
        if(d[i].dis==INT_MAX)
            fout<<"0 ";
        else
            fout<<d[i].dis<<" ";
    }
    return 0;
}