Pagini recente » Cod sursa (job #138044) | Cod sursa (job #385573) | Namlei | Cod sursa (job #2365740) | Cod sursa (job #2364702)
#include <bits/stdc++.h>
using namespace std;
const int N = 50010;
const int oo = 1000000010;
priority_queue<pair<int, int> > pq;
vector <pair<int, int> > v[N];
int n, m, c, x, y, d[N];
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int main()
{
f >> n >> m;
for(; m; m--)
{
f >> x >> y >> c;
v[x].push_back(make_pair(c, y));
}
for(int i = 2; i <= n; i++)
d[i] = oo;
pq.push(make_pair(0, 1));
while(!pq.empty())
{
c = pq.top().first; y = pq.top().second; pq.pop();
c = -c;
if(c == d[y])
for(auto vec:v[y])
if(d[vec.second] > c + vec.first)
{
d[vec.second] = c + vec.first;
pq.push(make_pair(-d[vec.second], vec.second));
}
}
for(int i = 2; i <= n; i++)
{
if(d[i] == oo)
g << 0 << ' ';
else
g << d[i] << ' ';
}
return 0;
}