Pagini recente » Cod sursa (job #3223981) | Cod sursa (job #2508796) | Cod sursa (job #3279122) | Cod sursa (job #1967254) | Cod sursa (job #1806062)
#include <fstream>
#include <vector>
#define oo 1<<30
using namespace std;
vector< pair<int, int> > L[50005];
int d[50005], t[50005];
bool viz[50005];
int main()
{
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int n, m, x, y, z;
f >> n >> m;
for(int i = 1; i <= m; i ++) {
f >> x >> y >> z;
L[x].push_back(make_pair(y, z));
}
for(int i = 2; i <= n; i ++)
d[i] = oo;
for(int i = 1; i <= n; i ++) {
int mn = oo, poz = 0;
for(int j = 1; j <= n; j ++) {
if(!viz[j] && d[j] < mn) {
mn = d[j];
poz = j;
}
}
if(poz) {
viz[poz] = true;
for(int j = 0; j < L[poz].size(); j ++) {
int nod = L[poz][j].first;
int cost = L[poz][j].second;
if(d[nod] > d[poz] + cost) {
d[nod] = d[poz] + cost;
t[nod] = poz;
}
}
}
}
for(int i = 2; i <= n; i ++)
if(d[i] == oo) g << "0 ";
else g << d[i] << " ";
g << "\n";
return 0;
}