Pagini recente » Monitorul de evaluare | Cod sursa (job #5787) | Cod sursa (job #2488964) | Cod sursa (job #1187931) | Cod sursa (job #3286331)
#include <bits/stdc++.h>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
const int NMAX = 3*10e5, INF = 2e30;
int n, d[NMAX],m;
vector<pair<int, int>> G[NMAX];
void dijkstra(int s)
{
for (int u = 0; u <= n; u++) {
d[u] = INF;
}
set<pair<int, int>> q;
q.emplace(0, s);
d[s] = 0;
while (!q.empty()) {
int u = q.begin()->second;
q.erase(q.begin());
for (auto[v, w] : G[u]) {
if (d[u] + w < d[v]) {
q.erase({ d[v], v });
d[v] = d[u] + w;
q.emplace(d[v], v);
}
}
}
}
int main()
{
int u,v,w;
f>>n>>m;
for(int i=1;i<=m;i++)
{
f>>u>>v>>w;
G[u].push_back({v,w});
}
dijkstra(1);
for(int i=2 ;i<=n;i++)
g<<d[i]<<' ';
return 0;
}