Pagini recente » Cod sursa (job #1569133) | Cod sursa (job #1569289) | Cod sursa (job #1760764) | Cod sursa (job #214980) | Cod sursa (job #2829042)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
vector<pair<int, int>>h[50005];
int n, m, p;
int d[50001];
void Dijkstra(int p)
{
set <pair<int, int> >S;
for(int i = 1; i <= n; i++)
d[i] = 2e9;
d[p] = 0;
S.insert({1, p});
while(!S.empty())
{
int cost = S.begin() -> first;
int nod = S.begin() -> second;
S.erase(S.begin());
for(auto i : h[nod])
if(d[nod] + i.first < d[i.second])
{
S.erase({d[i.second],i.second});
d[i.second] = d[nod] + i.first;
S.insert({d[i.second], i.second});
}
}
}
int main()
{
int x, y, z;
fin >> n >> m;
for(int i = 1; i <= m; i++)
{
fin >> x >> y >> z;
h[x].push_back({z, y});
/// h[y].push_back({x, z});
}
Dijkstra(1);
for(int i = 2; i <= n; i++)
if(d[i] == 1e9) fout << "-1 ";
else fout << d[i] << " ";
return 0;
}