Pagini recente » Cod sursa (job #2781267) | Cod sursa (job #813004) | Cod sursa (job #2881224) | Cod sursa (job #2624400) | Cod sursa (job #1192409)
#include<cstdio>
#include<vector>
#include<queue>
#define x first
#define y second
using namespace std;
#define Mmax 50001
vector< pair<int,int> > a[Mmax];
pair<int,int> aux1;
vector<int> d(Mmax,1<<30) ;
queue<int> q;
int n,m,z,nod,cost,aux,aa,bb;
void dijkstra(){
q.push(1);
d[1]=0;
while(!q.empty()){
aux=q.front();q.pop();
for(vector< pair<int,int> >::iterator it=a[aux].begin(); it!=a[aux].end(); it++) {
cost=it->y; nod=it->x;
if(d[nod]>d[aux]+cost) {
d[nod]=d[aux]+cost; q.push(nod);
}
}
}
}
int main() {
freopen("dijkstra.in","rt",stdin);
freopen("dijkstra.out","wt",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++){
scanf("%d%d%d",&aa,&bb,&z);
a[aa].push_back(make_pair(bb,z));
a[bb].push_back(make_pair(aa,z));
}
dijkstra();
for(int i=2; i<=n;i++){
printf("%d ", d[i] == 1<<30? 0 : d[i]);
}
printf("\n");
return 0;
}