Pagini recente » Cod sursa (job #835715) | Cod sursa (job #2467543) | Cod sursa (job #1171255) | Cod sursa (job #681880) | Cod sursa (job #3221172)
#include <fstream>
#include <queue>
#include <vector>
#include <cstring>
#define MARE 0x7f7f7f7f
#define LIMITA 50001
using namespace std;
struct VECIN{
int nn;
unsigned short int cost;
};
int i, n, m, x, y, s, d[LIMITA];
unsigned short int c;
vector<VECIN> vv[LIMITA];
priority_queue<pair<int, unsigned short int>> pq;
bool sel[LIMITA];
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
void Dijkstra(int s){
int nmin, dn;
memset(d, 0x7f, sizeof d);
d[s] = 0;
pq.push({0, 1});
while(!pq.empty()){
nmin = pq.top().second;
pq.pop();
if(!sel[nmin]){
sel[nmin] = true;
for(auto v : vv[nmin]){
d[v.nn] = min(d[v.nn], d[nmin] + v.cost);
pq.push({-d[v.nn], v.nn});
}
}
}
}
int main(){
fin >> n >> m;
for(i = 1; i <= m; i++){
fin >> x >> y >> c;
vv[x].push_back({y, c});
}
Dijkstra(1);
for(i = 2; i <= n; i++)
if(d[i] == MARE)
fout << "0 ";
else
fout << d[i] << ' ';
return 0;
}