Pagini recente » Cod sursa (job #1399664) | Cod sursa (job #2393757) | Cod sursa (job #178995) | Profil ionanghelina | Cod sursa (job #1350548)
#include <fstream>
#include <queue>
#include <vector>
#include <bitset>
#include <algorithm>
#include <functional>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
const int nmax = 50001;
const int inf = 1000001;
int n, m, d[nmax];
vector<pair<int, int>> v[nmax];
priority_queue < pair<int,int>, vector<pair<int, int>>, greater<pair<int, int>>> q;
bitset<nmax> viz;
void init(int s)
{
for (int i = 1; i <= n; i++)
d[i] = inf;
d[s] = 0;
}
void dijkstra(int s)
{
init(s);
q.push(make_pair(d[s], s));
while (!q.empty())
{
int x = q.top().second;
q.pop();
for (int i = 0; i < v[x].size(); i++)
{
int y = v[x][i].first;
int w = v[x][i].second;
if (d[y]>d[x] + w)
{
d[y] = d[x] + w;
q.push(make_pair(d[y], y));
}
}
}
}
int main()
{
fin >> n >> m;
for (int i = 1; i <= m; i++)
{
int x, y, z;
fin >> x >> y >> z;
v[x].push_back(make_pair(y, z));
}
dijkstra(1);
for (int i = 2; i <= n; i++)
{
if (d[i] == inf)
fout << 0 << ' ';
else
fout << d[i] << ' ';
}
}