Pagini recente » Cod sursa (job #2147457) | Cod sursa (job #1887382) | Cod sursa (job #2218336) | Cod sursa (job #1879215) | Cod sursa (job #1436650)
#include <fstream>
#include <cstring>
#include <vector>
#define DIM 50002
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int N,D[DIM],M;
vector <pair <int,int> > v[DIM];
int viz[DIM];
//int T[DIM];
int main(){
fin>>N>>M;
while(M--){
int x,y,cost;
fin>>x>>y>>cost;
v[x].push_back(make_pair(y,cost));
}
memset(D,0x3f3f3f3f,sizeof(D));
D[1]=0;
for(int pos=1;pos<=N;pos++){
int minim=0x3f3f3f3f;
int k;
for(int i=1;i<=N;i++)
if(D[i]<minim && viz[i]==0){
minim=D[i];
k=i;
}
if(minim==0x3f3f3f3f)
break;
viz[k]=1;
for(std::vector <pair <int,int > >::iterator it=v[k].begin();it!=v[k].end();it++){
if(D[it->first]>D[k]+it->second){
D[it->first]=D[k]+it->second;
//T[it->first]=k;
}
}
}
for(int i=2;i<=N;i++)
if(D[i]!=0x3f3f3f3f)
fout<<D[i]<<" ";
else
fout<<0<<" ";
}