Pagini recente » Cod sursa (job #619796) | Cod sursa (job #2574263) | Cod sursa (job #770843) | Profil FMI_ValentinSavoiu | Cod sursa (job #1752641)
#include <fstream>
#include <vector>
#include <climits>
#include <algorithm>
#include <queue>
#define NMAX 50005
#define INF INT_MAX
using namespace std;
int n,m,d[NMAX];
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
priority_queue< pair<int,int> > coada;
vector<int> G[NMAX],C[NMAX];
vector<int> answer;
void citire(){
f>>n>>m;
int i,x,y,z;
for(i=1;i<=m;i++){
f>>x>>y>>z;
G[x].push_back(y);
C[x].push_back(z);
}
}
void dijkstra(){
int i;
d[1]=0;
for(i=2;i<=n;i++)
d[i]=INF;
coada.push(make_pair(0,1));
while(!coada.empty()){
int val=coada.top().first;
int x=coada.top().second;
coada.pop();
for(i=0;i<G[x].size();i++){
if(d[G[x][i]]>val+C[x][i]){
d[G[x][i]]=val+C[x][i];
coada.push(make_pair(d[G[x][i]],G[x][i]));
}
}
}
for(i=2;i<=n;i++)
if(d[i]==INF)
g<<0<<' ';
else
g<<d[i]<<' ';
}
int main(){
citire();
dijkstra();
return 0;
}