Pagini recente » Cod sursa (job #971121) | Cod sursa (job #1996785) | Cod sursa (job #2676715) | Cod sursa (job #2799201) | Cod sursa (job #3328748)
#include <fstream>
#include <vector>
#include <queue>
#include <climits>
using namespace std;
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
struct edge
{
int v,w;
};
int n,m,d[50001];
vector <edge> vecin[50001];
class compare
{
public:
bool operator() (int x, int y)
{
return d[x] > d[y];
}
};
priority_queue <int, vector <int>, compare> q;
void Djikstra (int start)
{
for (int i=1; i<=n; i++)
d[i] = INT_MAX;
d[start] = 0;
q.push(start);
while (!q.empty())
{
int nod = q.top();
q.pop();
for (auto e : vecin[nod])
if (d[nod] + e.w < d[e.v])
{
d[e.v] = d[nod] + e.w;
q.push(e.v);
}
}
}
int main()
{
cin>>n>>m;
for (int i=0; i<m; i++)
{
int x,y,cost;
cin>>x>>y>>cost;
edge e;
e.v = y;
e.w = cost;
vecin[x].push_back(e);
}
Djikstra(1);
for (int i=2; i<=n; i++)
cout<<d[i]<<" ";
}