Pagini recente » Cod sursa (job #260665) | Cod sursa (job #489204) | Cod sursa (job #2087631) | Cod sursa (job #2340995) | Cod sursa (job #3338748)
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n, m, s, a, b, c, C[101], vis[101], inf = 999999;
vector<pair<int, int>> AD[101];
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> Q;
void Dijkstra(int nod)
{
Q.push({0, nod});
while (Q.size() != 0)
{
int c = Q.top().first;
nod = Q.top().second;
Q.pop();
// cout << c << " " << nod << "\n";
if (vis[nod] == 0)
vis[nod] = 1;
else
continue;
for (int i = 0; i < AD[nod].size(); i++)
{
int cw = AD[nod][i].first;
int w = AD[nod][i].second;
// cout << w << " " << cw << "\n";
if (C[w] > c + cw && vis[w] == 0)
{
C[w] = c + cw;
Q.push({cw + c, w});
}
}
}
}
int main()
{
fin >> n >> m;
for (int i = 1; i <= m; i++)
{
fin >> a >> b >> c;
AD[a].push_back({c, b});
}
for (int i = 1; i <= n; i++)
C[i] = inf;
C[1] = 0;
Dijkstra(1);
for (int i = 2; i <= n; i++)
if (C[i] != inf)
fout << C[i] << " ";
else
fout << 0 << " ";
return 0;
}