Pagini recente » Cod sursa (job #2852251) | Cod sursa (job #2527123) | Cod sursa (job #235672) | Cod sursa (job #2790082) | Cod sursa (job #2708739)
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
#define maxxi 0x3f3f3f3f
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n,m,x,y,l,d[50005];
bool viz[50005];
vector <pair<int,int>> graph[50005];
struct comp
{
bool operator()(int x, int y)
{
return d[x] > d[y];
}
};
priority_queue<int , vector <int > , comp> q;
void citire()
{
fin >> n >> m;
for(int i = 0; i < m; i++)
{
fin >> x >> y >> l;
graph[x].push_back(make_pair(y,l));
}
}
void dijkstra(int st)
{
for(int i = 1; i <= n ; i++)
d[i] = maxxi;
d[st] = 0;
viz[st] = true;
q.push(st);
while(!q.empty())
{
int nod_curent = q.top();
q.pop();
viz[nod_curent] = false;
for(auto &v : graph[nod_curent])
{
int vecin = v.first;
int lg = v.second;
if(d[nod_curent] + lg < d[vecin])
{
d[vecin] = d[nod_curent] + lg;
if(viz[vecin] == false)
{
q.push(vecin);
viz[vecin] = true;
}
}
}
}
}
int main()
{
citire();
dijkstra(1);
for(int i = 2; i <= n; i++)
if(d[i] != maxxi)
fout << d[i] <<" " ;
else
fout << "0 ";
return 0;
}