Cod sursa(job #1643641)

Utilizator theodor1289Theodor Amariucai theodor1289 Data 9 martie 2016 19:38:05
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
vector< pair<int, int> > g[50010];
int n, m, x, y, d, p, u;
int dist[50010];
int coada[250010];
bool viz[50010];

int main()
{
    fin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        fin>>x>>y>>d;
        g[x].push_back(make_pair(y, d));
        g[y].push_back(make_pair(x, d));
    }

    for(int i=2;i<=n;i++)
        dist[i]=2000000000;

    p=u=1;
    coada[1]=1;
    while(p<=u)
    {
        viz[coada[p]]=0;
        for(int i=0; i<g[coada[p]].size(); i++)
            if(!viz[g[coada[p]][i].first])
            if(g[coada[p]][i].second+dist[coada[p]]<dist[g[coada[p]][i].first])
        {
            coada[++u]=g[coada[p]][i].first;
            viz[g[coada[p]][i].first]=1;
            dist[g[coada[p]][i].first]=g[coada[p]][i].second+dist[coada[p]];
        }
        p++;
    }

    for(int i=2;i<=n;i++)
        fout<<dist[i]<<' ';
    return 0;
}