Cod sursa(job #1217343)

Utilizator AeroHHorea Stefan AeroH Data 7 august 2014 04:21:08
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>
#include <vector>
#include <queue>
#define punct pair<int,int>
#define x first
#define y second
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");

int N,M,i,S,d[100005],x,y,z;
queue<int> Q;
vector<punct> v[100005];

int main()
{
    f>>N>>M;
    while(M--)
        f>>x>>y>>z,v[x].push_back(make_pair(y,z));
    for(i=1;i<=N;++i)d[i]=1<<30;

    Q.push(1),d[1]=0;
    while(!Q.empty())
        {
            int cr=Q.front();Q.pop();
            for (i=0;i<v[cr].size();++i)
                if (d[v[cr][i].x]>d[cr]+v[cr][i].y)
                    d[v[cr][i].x]=d[cr]+v[cr][i].y,Q.push(v[cr][i].x);
        }
    for (i=2;i<=N;++i)
        g<<d[i]<<" ";





    return 0;
}