Pagini recente » Cod sursa (job #2031154) | Cod sursa (job #2345801) | Cod sursa (job #2466756) | Cod sursa (job #2785219) | Cod sursa (job #3256335)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 5e4;
const int INF = 1e9;
vector< pair<int, int> > G[NMAX + 1];
int d[NMAX + 1]; //d[i] = distanta minima de la 1 la i
int vis[NMAX + 1];
int main() {
int n, m;
cin >> n >> m;
for(int i = 1; i <= m; i++) {
int x, y, c;
cin >> x >> y >> c;
//G[x].push_back(make_pair(y, c));
G[x].push_back({y, c});
}
for(int i = 1; i <= n; i++) {
d[i] = INF;
}
d[1] = 0;
//O(n^2)
for(int i = 1; i <= n; i++) {
int node = 0;
int minim = INF;
for(int j = 1; j <= n; j++) {
if(!vis[j] && d[j] < minim) {
minim = d[j];
node = j;
}
}
vis[node] = 1;
for(auto next : G[node]) {
int vecin = next.first;
int cost_muchie = next.second;
if(!vis[vecin] && d[vecin] > d[node] + cost_muchie) {
d[vecin] = d[node] + cost_muchie;
}
}
}
for(int i = 2; i <= n; i++) {
if(d[i] == INF) {
d[i] = 0;
}
cout << d[i] << ' ';
}
return 0;
}