Pagini recente » Cod sursa (job #1360118) | Cod sursa (job #2164585) | Cod sursa (job #2317043) | Cod sursa (job #2826674) | Cod sursa (job #3215539)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
int n, m;
struct queueue {
int distanta, nod;
bool operator<(const queueue& temp) const {
return distanta > temp.distanta;
}
};
struct ceva {
int nod, cost;
};
priority_queue<queueue> q;
vector<vector<ceva>> adj;
int costMinim[10001];
void distra(int startingNode) {
for (int i = 1; i <= n; i++) costMinim[i] = 2147483647;
q.push({ 0, startingNode });
costMinim[startingNode] = 0;
while (!q.empty())
{
queueue nodCurent = q.top();
for (ceva vecinCurent : adj[nodCurent.nod])
{
if (costMinim[vecinCurent.nod] > costMinim[nodCurent.nod] + vecinCurent.cost) {
costMinim[vecinCurent.nod] = costMinim[nodCurent.nod] + vecinCurent.cost;
//cout<<nodCurent.distanta<<" " << nodCurent.nod << " " << vecinCurent.nod << " " << costMinim[vecinCurent.nod] << "\n";
q.push({ costMinim[vecinCurent.nod], vecinCurent.nod});
}
}
q.pop();
}
}
int main()
{
cin >> n >> m;
adj.resize(n + 1);
for (int i = 0; i < m; i++) {
int x, y, cost;
cin >> x >> y >> cost;
adj[x].push_back({ y, cost });
}
distra(1);
for(int i = 2; i<=n;i++) cout<<costMinim[i]<<" ";
}