Pagini recente » Cod sursa (job #974391) | Cod sursa (job #2563919) | Cod sursa (job #2617982) | Cod sursa (job #105352) | Cod sursa (job #1923684)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define INF 0x7FFFFFFF
#define nmax 100099
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n,start,muchii;
int dmin[nmax],prec[nmax],viz[nmax];
vector< pair< int ,int > > G[nmax];
class compa{
public:
bool operator()(const int&x,const int& y){
return dmin[x]>dmin[y];
}
};
priority_queue<int, vector<int> , compa > H;
void citire(){int m,x,y,c;
fin>>n;
fin>>m;
muchii=m;
start=1;
while(m--){
fin>>x>>y>>c;
G[x].push_back(make_pair(y,c));
}
}
void dijkstra(){
int i,vfmin;
for(i=1;i<=n;i++)dmin[i]=INF;
dmin[start]=0;
H.push(start);
while(!H.empty())
{vfmin=H.top();
H.pop();
if(muchii<200999){
if(viz[vfmin]==1)continue;
viz[vfmin]=1;
}
for(i=0; i<G[vfmin].size(); i++)
if(dmin[G[vfmin][i].first]> dmin[vfmin] + G[vfmin][i].second)
{ dmin[G[vfmin][i].first]= dmin[vfmin] + G[vfmin][i].second;
H.push(G[vfmin][i].first);
}
}
}
int main(){
citire();
dijkstra();
for(int i=2;i<=n;i++)
if(dmin[i]==INF)fout<<"0 ";
else fout<<dmin[i]<<' ';
}