Pagini recente » Cod sursa (job #2866681) | Cod sursa (job #1787094) | Cod sursa (job #1418136) | Cod sursa (job #1732988) | Cod sursa (job #1780491)
#include <cstdio>
#include <vector>
#include <queue>
#define NMAX 50001
#define INF 250000000
#define pb push_back
#define mp make_pair
using namespace std;
vector <pair <int ,int > >v[NMAX];
priority_queue <pair <int ,int > >q;
int best[NMAX];
int n,m,x,y,z;
inline void init(int a,int b,int v[]){
for (int i=a;i<=b;i++)v[i]=INF;
}
inline void dijkstra(){
q.push(mp(0,1));
while (!q.empty()){
int dist=-q.top().first;
int nodc=q.top().second;
q.pop();
for (auto it:v[nodc])
if (dist+it.second<best[it.first]){
best[it.first]=dist+it.second;
q.push(mp(-best[it.first],it.first));
}
}
}
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
scanf("%d %d\n",&n,&m);
for (int i=1;i<=n;i++){
scanf("%d %d %d\n",&x,&y,&z);
v[x].pb(mp(y,z));
v[y].pb(mp(x,z));
}
init(2,n,best);
dijkstra();
for (int i=1;i<=n;i++)printf("%d ",best[i]);
fclose(stdin);
fclose(stdout);
}