Pagini recente » Cod sursa (job #3339667) | Cod sursa (job #2696510) | Cod sursa (job #3251963) | Cod sursa (job #3314231) | Cod sursa (job #3323989)
#include <bits/stdc++.h>
using namespace std;
#define inf 200000000
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
vector<vector<pair<int,int>>> graf;
vector<int> d, tata, q;
int sel_min (int n, int s) {
int u_min = s, c_min = inf;
for (int i = 0; i < n; i++) {
if (c_min > d[i] && q[i]) {
c_min = d[i];
u_min = i;
}
}
return u_min;
}
bool checkempty(vector<int>& q, int n) {
bool isempty = true;
for (int i = 0; i < n; i++) {
if (q[i] != 0) { isempty = false; break; }
}
return isempty;
}
void dijkstra(int n, int m, int s) {
q.assign(n, 1);
d.assign(n, inf); d[s] = 0;
tata.assign(n, 0); tata[s] = -1;
int u;
for (int i = 0; i < n; i++) {
u = sel_min(n, s);
q[u] = 0;
//if (graf[u].empty()) { continue; }
for (pair<int, int> m : graf[u]) {
if (d[m.first] > d[u] + m.second) {
d[m.first] = d[u] + m.second;
tata[m.first] = u;
}
}
}
}
int main() {
int n, m; fin >> n >> m;
graf.resize(n);
for (int i = 0; i < m; i++) {
int x, y, c; fin >> x >> y >> c; x--; y--;
graf[x].push_back(pair<int,int>(y, c));
}
dijkstra(n, m, 0);
for (int u = 1; u < n; u++) {
if (d[u]== inf)
d[u]=0;
fout << d[u] << " ";
}
fout.close();
return 0;
}