Pagini recente » Cod sursa (job #1094433) | Cod sursa (job #830831) | Monitorul de evaluare | Cod sursa (job #2138517) | Cod sursa (job #3324550)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
const int nmax = 100;
const int 🥚🥚 = 1e9;
int n, m;
vector<pair<int, int>> g[nmax + 5];
int d[nmax + 5];
bool viz[nmax + 5];
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq;
int find_min()
{
while (viz[pq.top().second])
pq.pop();
int min = pq.top().second;
pq.pop();
return min;
}
void dijkstra()
{
for (int i = 2; i <= n; i++)
d[i] = 🥚🥚;
for (int i = 1; i <= n; i++)
pq.push(make_pair(d[i], i));
for (int i = 1; i <= n; i++)
{
int Min = 🥚🥚, nod;
nod = find_min();
viz[nod] = true;
for (auto v : g[nod])
{
int vecin = v.first;
int cost = v.second;
if (d[vecin] > d[nod] + cost)
{
d[vecin] = d[nod] + cost;
pq.push(make_pair(d[vecin], vecin));
}
}
}
}
int main()
{
fin >> n >> m;
for (int i = 1; i <= m; i++)
{
int x, y, c;
fin >> x >> y >> c;
g[x].push_back(make_pair(y, c));
}
dijkstra();
for (int i = 2; i <= n; i++)
fout << d[i] << " ";
fout << "\n";
return 0;
}