Cod sursa(job #1125700)

Utilizator ignadariusIgna Darius ignadarius Data 26 februarie 2014 19:04:58
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
# include <fstream>
# include <iostream>
# include <algorithm>
# include <vector>
# include <queue>
# define inf 100000000

using namespace std;

int n,m,x,y,c,dist[50005];
vector<pair<int, int> > v[50005];
void dijksta()
{
    queue <int >q;
    for(int i=1; i<=n; i++)
        dist[i]=inf;
    q.push(1);
    dist[1]=0;
    while(!q.empty())
    {
        int s=q.front();
        for(vector<pair<int, int> >::iterator it=v[s].begin();it!=v[s].end();++it)
            if(dist[s]+it->second<dist[it->first])
            {
                dist[it->first]=dist[s]+it->second;
                q.push(it->first);
            }
        q.pop();
    }
}
int main()
{
    ifstream f("dijkstra.in");
    ofstream g("dijkstra.out");
    f>>n>>m;
    for(int i=1; i<=m; i++)
    {
        f>>x>>y>>c;
        v[x].push_back(make_pair(y,c));
    }
    dijksta();
    for(int i=2; i<=n; i++)
        if(dist[i]!=inf)g<<dist[i]<<" ";else g<<"0 ";
        return 0;

}