Pagini recente » Cod sursa (job #2049902) | Cod sursa (job #514237) | Cod sursa (job #3257327) | Cod sursa (job #2895260) | Cod sursa (job #2998772)
#include <fstream>
#include <vector>
#include <climits>
#include <queue>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
bool viz[50005];
int n, m;
int d[50005];
priority_queue <pair <int, int> > q;
vector <pair <int, int> > v[50005];
int main()
{
f>>n>>m;
for(int i=0; i<m; i++)
{
int x, y, c;
f>>x>>y>>c;
v[x].push_back(make_pair(y, c));
}
for(int i=1; i<=n; i++)
d[i]=INT_MAX;
d[1]=0;
q.push(make_pair(0, 1));
while(!q.empty())
{
int nod=q.top().second;
int val=-q.top().first;
q.pop();
if(viz[nod])
continue;
viz[nod]=1;
for(int i=0; i<v[nod].size(); i++)
{
int cost=v[nod][i].second;
int vecin=v[nod][i].first;
if(!viz[vecin])
{
if(val+cost < d[vecin])
{
d[vecin]=val+cost;
q.push(make_pair(-val-cost, vecin));
}
}
}
}
for(int i=2; i<=n; i++)
if(d[i]!=INT_MAX)
g<<d[i]<<" ";
else
g<<0<<" ";
return 0;
}