Pagini recente » Clasament simulare_oji_10_2 | Cod sursa (job #24172) | Cod sursa (job #427106) | Cod sursa (job #2932572) | Cod sursa (job #2675201)
#include <fstream>
#include <vector>
#include <bitset>
#define INF 2000000000
using namespace std;
int n,m,i,nr,minim,vec,x,y,co,D[50010],nod,cost;
vector < pair<int,int> > L[50010];
bitset <50010> v;
int main () {
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
fin>>n>>m;
while (fin>>x>>y>>co){
L[x].push_back(make_pair(y,co));
}
for (i=2;i<=n;i++){
D[i]=INF;
}
nr=0;
while (nr<=n){
minim=INF+1;
for (i=1;i<=n;i++){
if (v[i]==0&&D[i]<minim){
minim=D[i];
nod=i;
}
}
v[nod]=1;
nr++;
for (i=0;i<L[nod].size();i++){
vec=L[nod][i].first;
cost=L[nod][i].second;
if (v[vec]==0){
if (D[vec]>D[nod]+cost){
D[vec]=D[nod]+cost;
}
}
}
}
for (i=2;i<=n;i++){
if (D[i]==INF){
fout<<"0 ";
}
else{
fout<<D[i]<<" ";
}
}
return 0;
}