Pagini recente » Cod sursa (job #2545792) | Cod sursa (job #1915022) | Cod sursa (job #2278184) | Cod sursa (job #3152922) | Cod sursa (job #3272557)
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
vector<pair<int, int>> G[100001];
struct cmp {
bool operator()(pair<int, int> a, pair<int, int> b) {
return a.second > b.second;
}
};
priority_queue<pair<int, int>, vector<pair<int, int>>, cmp> pq;
int INF = 9999999;
int d[100001], viz[100001];
int main()
{
int n, m, x, y, c;
fin >> n >> m;
for (int i = 1; i <= m; i++) {
fin >> x >> y >> c;
G[x].push_back(make_pair(y, c));
}
for (int i = 1; i <= n; i++)
d[i] = INF;
d[1] = 0;
pq.push(make_pair(1, 0));
while(!pq.empty())
{
int nod = pq.top().first;
viz[nod] = 1;
pq.pop();
for(int i = 0; i < G[nod].size(); i++)
{
pair<int, int> vecin = G[nod][i];
if(viz[vecin.first] == 0)
{
if(d[vecin.first] > d[nod] + vecin.second)
{
d[vecin.first] = d[nod] + vecin.second;
pq.push(make_pair(vecin.first, d[vecin.first]));
}
}
}
}
for(int i = 2; i <= n; i++)
fout << d[i] << " ";
return 0;
}