Pagini recente » Cod sursa (job #108544) | Cod sursa (job #949932) | Cod sursa (job #1445811) | Cod sursa (job #1281285) | Cod sursa (job #1436614)
#include <fstream>
#include <cstring>
#include <queue>
#include <vector>
#define DIM 50002
#define x first
#define y second
#define INF 0x3f3f3f3f
using namespace std;
vector <pair<int,int> > v[DIM];
int N,M;
queue <int> Q;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int D[DIM];
int Iq[DIM];
int main(){
fin>>N>>M;
while(M--){
int x,y,cost;
fin>>x>>y>>cost;
v[x].push_back(make_pair(y,cost));
}
Iq[1]=1;
Q.push(1);
memset(D,INF,sizeof(D));
D[1]=0;
while(!Q.empty()){
int node=Q.front();
Iq[node]=0;
Q.pop();
for(vector <pair<int,int> >::iterator it=v[node].begin();it!=v[node].end();it++){
int next=it->first;
int cost=it->second;
if(D[next]>D[node]+cost){
D[next]=D[node]+cost;
if(!Iq[next]){
Iq[next]=1;
Q.push(next);
}
}
}
}
for(int i=2;i<=N;i++)
if(D[i]!=INF)
fout<<D[i]<<" ";
else
fout<<"0 ";
fout<<"\n";
}