Pagini recente » Cod sursa (job #2252082) | Cod sursa (job #2662526) | Cod sursa (job #2640588) | Cod sursa (job #2624125) | Cod sursa (job #1192416)
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
vector< vector< pair<int,int> > > vecini;
vector< pair<int,int> > t;
vector<int> dist;
queue<int> q;
int n,m,x,y,z,nod,cost,aux;
void dijkstra(){
dist[1]=0;
for(q.push(1);!q.empty(); q.pop()){
aux=q.front();
for(unsigned i=0; i<vecini[aux].size(); i++) {
cost=vecini[aux][i].first; nod=vecini[aux][i].second;
if(dist[nod]>dist[aux]+cost) {
dist[nod]=dist[aux]+cost; q.push(nod);
}
}
}
}
int main(){
freopen("dijkstra.in","rt",stdin);
freopen("dijkstra.out","wt",stdout);
scanf("%d%d",&n,&m);
vecini.assign(n+1,t);
dist.assign(n+1,1<<30);
pair<int,int> aux1;
for(int i=0; i<m;i++) {
scanf("%d%d%d",&x,&y,&z);
vecini[x].push_back(make_pair(y,z));
}
dijkstra();
for(int i=1; i<n-1; i++)
printf("%d ",dist[i+2]!=1<<30 ? dist[i+2] : 0 );
printf("\n");
return 0;
}