Pagini recente » Cod sursa (job #860008) | Cod sursa (job #2947940) | Cod sursa (job #58737) | Cod sursa (job #961037) | Cod sursa (job #3286344)
#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 nod)
{ /// toate muchiile sunt initializate cu cost maxim
for (int i = 1; i <= n; i++)
{
d[i] = INF;
}
set<pair<int, int>> q;
q.emplace(nod,0);
d[nod] = 0;
while (!q.empty())
{
int u = q.begin()->first;
q.erase(q.begin());
for (auto[v, w] : G[u])
{
if (d[u] + w < d[v])
{
q.erase({ v, d[v] });
d[v] = d[u] + w;
q.emplace(v, d[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++)
if(d[i]==INF)
g<<"0 ";
else
g<<d[i]<<' ';
return 0;
}