Pagini recente » Borderou de evaluare (job #3029822) | Borderou de evaluare (job #1918049) | Borderou de evaluare (job #559045) | Borderou de evaluare (job #436856) | Cod sursa (job #1970594)
#include<fstream>
#include<vector>
using namespace std;
const int INF = 1000000000;
const int NMAX = 5e4 + 5;
int main() {
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
int n,m;
vector <pair <int,int> > g[NMAX]; //(n);
cin>>n>>m;
for (int i=0; i<m; i++) {
int x,y,c;
cin >> x >> y >> c;
g[x].push_back(make_pair(y, c));
}
int s = 1;
vector<int> d (n+1, INF), p (n); //n+1!!!
d[s] = 0;
bool u[NMAX];
for (int i=0; i<n; ++i) {
int v = -1;
for (int j=1; j<=n; ++j)
if (!u[j] && (v == -1 || d[j] < d[v]))
v = j;
if (d[v] == INF)
break;
u[v] = true;
for (size_t j=0; j<g[v].size(); ++j) {
int to = g[v][j].first,
len = g[v][j].second;
if (d[v] + len < d[to]) {
d[to] = d[v] + len;
p[to] = v;
}
}
}
for (int i=2; i<=n; i++) cout<<d[i]<<" ";
return 0;
}