Pagini recente » Cod sursa (job #1235267) | Cod sursa (job #1917675) | Cod sursa (job #208342) | Cod sursa (job #2397899) | Cod sursa (job #3246897)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
vector<pair<int,int> > v[50001];
int cost[50001], n, m, inf=1e9, inCoada[50001];
class cmp{
public:
bool operator()(int x, int y){
return cost[x] > cost[y];
}
};
priority_queue<int, vector<int>, cmp> pq;
void dijkstra(int nod){
for (int i=1; i<=n; i++){
cost[i] = inf;
}
cost[nod] = 0;
pq.push(nod);
while (!pq.empty()){
nod = pq.top();
for (auto elem: v[nod]){
if (cost[nod] + elem.second < cost[elem.first]){
cost[elem.first] = cost[nod]+elem.second;
if (!inCoada[elem.first]){
pq.push(elem.first);
inCoada[elem.first] = 1;
}
}
}
inCoada[nod] = 0;
pq.pop();
}
}
int main()
{
fin>>n>>m;
for (int i=1; i<=m; i++){
int x,y,c;
fin>>x>>y>>c;
v[x].push_back(make_pair(y,c));
v[y].push_back({x,c});
}
dijkstra(1);
for (int i=2; i<=n; i++)
fout<<cost[i]<<" ";
return 0;
}