Pagini recente » Cod sursa (job #202872) | Cod sursa (job #2089634) | Cod sursa (job #933356) | Cod sursa (job #2846079) | Cod sursa (job #2469484)
#include<cstdio>
#include<vector>
#include<queue>
#include<cstring>
using namespace std;
vector<pair<int,int>> graph[50002];
vector<pair<int,int>>::iterator it;
queue<int> que;
int used[50002],dmin[50002],a,b,c,crt,n,m,i;
int main(){
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++){
scanf("%d%d%d",&a,&b,&c);
graph[a].push_back(make_pair(b,c));
}
memset(used,false,sizeof(used));
memset(dmin,0x3f3f3f3f,sizeof(dmin));
used[1]=true;
dmin[1]=0;
que.push(1);
while(!que.empty()){
crt=que.front();
que.pop();
used[crt]=false;
for(it=graph[crt].begin();it!=graph[crt].end();it++){
if(dmin[it->first]>dmin[crt]+it->second){
dmin[it->first]=dmin[crt]+it->second;
if(!used[it->first]){
que.push(it->first);
used[it->first]=true;
}
}
}
}
for(i=2;i<=n;i++){
if(dmin[i]!=0x3f3f3f3f){
printf("%d ",dmin[i]);
}
else printf("0 ");
}
return 0;
}