Pagini recente » Cod sursa (job #2151025) | Cod sursa (job #3191719) | Cod sursa (job #2742374) | Cod sursa (job #2611092) | Cod sursa (job #1408914)
#include <fstream>
#include <algorithm>
#include <vector>
#include <queue>
#define pe pair<int, int>
#define mp make_pair
#define fi first
#define se second
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
const int MAX_N = 50100;
const int INF = 1000000000;
class cmp {
public:
inline bool operator() (const pe &a, const pe &b) {
return a.fi > b.fi;
}
};
priority_queue<pe, vector<pe>, cmp> Q;
int d[MAX_N];
bool viz[MAX_N];
int n;
vector<pe> A[MAX_N];
void dijkstra(int s) {
for(int i = 1; i <= n; i++) {
d[i] = INF;
viz[i] = false;
}
d[s] = 0;
Q.push(mp(0, s));
while(!Q.empty()) {
int nod = Q.top().se;
Q.pop();
if(viz[nod]) {
continue;
}
viz[nod] = true;
for(auto it : A[nod]) {
if(d[nod] + it.fi < d[it.se]) {
d[it.se] = d[nod] + it.fi;
Q.push(mp(d[it.se], it.se));
}
}
}
}
int main() {
int m;
fin >> n >> m;
for(int i = 1; i <= m; i++) {
int a, b, c;
fin >> a >> b >> c;
A[a].push_back(mp(c, b));
A[b].push_back(mp(c, a));
}
dijkstra(1);
for(int i = 2; i <= n; i++) {
fout << d[i] << ' ';
}
return 0;
}