Pagini recente » Cod sursa (job #266556) | Cod sursa (job #1667275) | Cod sursa (job #3261515) | Cod sursa (job #3004290) | Cod sursa (job #976389)
Cod sursa(job #976389)
#include <fstream>
#include <iostream>
#include <vector>
#include <set>
#define DIMN 50010
#define INF 1000000000
using namespace std;
vector<pair<int,int> > L[DIMN];
//vector<pair<int,int> >::iterator itl;
set<pair<int,int> > S;
//set<pair<int,int> >::iterator it;
int D[DIMN];
int V[DIMN];
int n,m,x,y,c,i,nod,val,nodvecin,valvecin;
pair<int,int> p;
int main() {
/*
S.insert(make_pair(0,1));
S.insert(make_pair(0,2));
for (it = S.begin();it!=S.end();it++) {
cout<<it->first<<" "<<it->second<<"\n";
}
*/
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
fin>>n>>m;
for (i=1;i<=m;i++) {
fin>>x>>y>>c;
L[x].push_back(make_pair(c,y));
}
for (i=2;i<=n;i++)
D[i] = INF;
S.insert(make_pair(0,1));
while (!S.empty()) {
nod = S.begin()->second;
val = S.begin()->first;
S.erase(S.begin());
// if (V[nod] == 1)
// continue;
// V[nod] = 1;
for (i = 0;i<L[nod].size();i++) {
nodvecin = L[nod][i].second;
valvecin = L[nod][i].first;
if (D[nodvecin] > D[nod] + valvecin) {
D[nodvecin] = D[nod] + valvecin;
S.insert(make_pair(D[nodvecin],nodvecin));
}
}
}
for (i=2;i<=n;i++)
if (D[i] == INF)
fout<<"0 ";
else
fout<<D[i]<<" ";
return 0;
}