Pagini recente » Cod sursa (job #2449436) | Cod sursa (job #332306) | Cod sursa (job #1359057) | Cod sursa (job #2168399) | Cod sursa (job #366063)
Cod sursa(job #366063)
#include <stdio.h>
#include <vector>
#include <queue>
using namespace std;
#define pb push_back
#define N 50005
#define INF 2000000000
queue<int> q;
typedef pair <int, int> graf;
vector <graf> v[N];
int nr[N],sol[N],f[N],n,m;
int x,y,z;
char s[30];
void citire(){
fgets(s,30,stdin);
int j=0,aux=0;
for(;s[j]>='0' && s[j]<='9';j++)
aux=aux*10+s[j]-'0';
j++;x=aux;aux=0;
for(;s[j]>='0' && s[j]<='9';j++)
aux=aux*10+s[j]-'0';
j++;y=aux;aux=0;
for(;s[j]>='0' && s[j]<='9';j++)
aux=aux*10+s[j]-'0';
j++;z=aux;
}
int main(){
int nod,nxt,cst,i;
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
scanf("%d%d\n", &n, &m);
for(int i=1; i<= m ; i++){
//scanf("%d%d%d",&x,&y,&z);
citire();
v[x].pb(graf(y, z));
nr[x]++;
}
for(i=2;i<=n;i++)
sol[i]=INF;
q.push(1);
f[1]=1;
while(!q.empty()){
nod = q.front();
q.pop();
for(i=0;i<nr[nod]; i++){
nxt=v[nod][i].first;
cst=v[nod][i].second;
if(sol[nod]+cst<sol[nxt]){
sol[nxt]=sol[nod]+cst;
if(!f[nxt]){
q.push(nxt);
f[nxt]=1;
}
}
}
f[nod]=0;
}
for(i=2;i<=n;i++)
printf("%d ",sol[i]!=INF ? sol[i] : 0);
return 0;
}