Pagini recente » Cod sursa (job #2314654) | Cod sursa (job #3124593) | Cod sursa (job #1519887) | Cod sursa (job #1549357) | Cod sursa (job #2202039)
#include <bits/stdc++.h>
using namespace std;
struct elem{
int y, val;
bool operator<(const elem &obj)const{
return val < obj.val;
}
};
int n, m, d[50005];
vector< pair<int, int> > v[50005];
priority_queue<elem> q;
int main()
{
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
fin >> n >> m;
for (int i = 0; i < 50005; ++i)
d[i] = (1<<31)-1;
while(m--){
int y1, y2, z;
fin >> y1 >> y2 >> z;
v[y1].push_back(make_pair(y2, z));
v[y2].push_back(make_pair(y1, z));
}
elem begn;
begn.y = 1;
begn.val = 0;
q.push(begn);
while(!q.empty()){
elem k = q.top();
q.pop();
for (int i = 0; i < v[k.y].size(); ++i)
if(k.val+v[k.y][i].second < d[v[k.y][i].first]){
d[v[k.y][i].first] = k.val+v[k.y][i].second;
elem el;
el.y = v[k.y][i].first;
el.val = d[v[k.y][i].first];
q.push(el);
}
}
for (int i = 2; i <= n; ++i)
fout << (d[i] == (1<<31)-1 ? 0 : d[i]) << " ";
return 0;
}