Pagini recente » Cod sursa (job #788669) | Cod sursa (job #2612348) | Cod sursa (job #1303188) | Cod sursa (job #2327047) | Cod sursa (job #1427061)
#include <fstream>
#include <vector>
#include <algorithm>
#define nmax 80000
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int N, M, costuri[250000];
bool seen[nmax];
vector <pair <int,int>> graf[nmax];
int main()
{int i, a, cost, b, minime, nrMin, j;
f>>N>>M;
for(i = 2; i <= N; ++i)
costuri[i] = 1100;
costuri[1] = 0;
for(i = 1; i <= M; ++i){
f>>a>>b>>cost;
graf[a].push_back(make_pair(b, cost));
}
for(int k = 1; k <= N; ++k){
minime = 10000;
for(i = 1; i <= N; ++i)
if(!seen[i] && costuri[i] < minime){
minime = costuri[i];
nrMin = i;
}
seen[nrMin] = true;
for(j = 0; j < graf[nrMin].size(); ++j){
if(costuri[nrMin] + graf[nrMin][j].second < costuri[graf[nrMin][j].first]){
costuri[graf[nrMin][j].first] = costuri[nrMin] + graf[nrMin][j].second;
}
}
}
for(i = 2; i <= N; ++i){
if(costuri[i] != 1100)
g<<costuri[i]<<' ';
else g<<0<<' ';
}
g<<'\n';
return 0;
}