Pagini recente » Cod sursa (job #2786564) | Cod sursa (job #854545) | Cod sursa (job #1854386) | superboolaneala | Cod sursa (job #381838)
Cod sursa(job #381838)
#include <stdio.h>
#include <vector>
#include <queue>
#define size 50100;
#define max 2000000000;
typedef struct a{
long x,t;
} adat;
long i,j,n,m,u,p;
adat a;
vector<adat> v[size];
vector<long> dist;
struct comp{
bool operator()(long x, long y) { return dist[x]>dist[y]; }
};
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
scanf("%d %d",&n,&m);
for(i=1;i<=n;++i){
for(j=1;j<=m;++j){
scanf("%ld %ld %ld",p,a.x,a.t);
v[p].push_back(a);
}
scanf("\n");
}
priority_queue<long, vector<long>, comp> heap;
for(i=1;i<=n;++i) dist[i]=max;
heap.push(1);
dist[1]=0;
while(!heap.empty()){
u=heap.top();
heap.pop();
for(i=0;i<=v[u].size();++i){
if(dist[v[u][i].x]>dist[u]+v[u][i].t){
dist[v[u][i].x]=dist[u]+v[u][i].t;
heap.push(v[u][i].x);
}
}
}
for(i=2;i<=n;++i){
if(dist[i]==max) printf("%c ","0") else
printf("%ld ",dist[i]);
}
return 0;
}