Pagini recente » Cod sursa (job #2694478) | Cod sursa (job #2643101) | Cod sursa (job #455277) | Cod sursa (job #2653777) | Cod sursa (job #2864793)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
const int NMAX = 50002;
vector < pair <int, int> > v[NMAX];
multimap <int, pair <int, int> > q;
int dist[NMAX], N, M;
bool vis[NMAX];
int main()
{
fill_n(dist, NMAX, 1e9);
dist[1] = 0;
fin>>N>>M;
int a, b, c;
for(int i = 1; i <= M; i++)
{
fin>>a>>b>>c;
v[a].push_back(pair<int, int>(b, c));
}
int y;
pair <int, int> x;
for(auto i : v[1]) {
pair <int, int> _;
_.first = 1;
_.second = i.first;
q.insert(pair<int, pair <int, int> >(i.second, _));
}
vis[1] = 1;
while(!q.empty())
{
x = q.begin() -> second;
y = q.begin() -> first;
q.erase(q.begin());
dist[x.second] = min(dist[x.second], dist[x.first] + y);
if(!vis[x.second])
{
for(auto i : v[x.second])
{
pair <int, int> _;
_.first = x.second;
_.second = i.first;
q.insert(pair<int, pair <int, int> >(i.second, _));
}
vis[x.second] = 1;
}
}
for(int i = 2; i <= N; i++)
fout<<dist[i]<<" ";
return 0;
}