Pagini recente » Cod sursa (job #188210) | Cod sursa (job #3239307) | Cod sursa (job #1073624) | Cod sursa (job #1275674) | Cod sursa (job #671774)
Cod sursa(job #671774)
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
#define inf 0x3f3f3f
#define Mmax 50001
#define F(i, EXP) for(register int i=0;(EXP);++i)
#define FU(i,EXP) for(unsigned int i=0;(EXP);++i)
struct punct{int x,c;};
vector< vector<punct> > a(Mmax);
vector<int > d(Mmax,inf) ;
queue<int> q;
int n,m,x,y,z,nod,cost,aux;
void dijkstra()
{q.push(1);
d[1]=0;
while(!q.empty())
{aux=q.front();q.pop();
FU(i,i<a[aux].size())
{cost=a[aux][i].c; nod=a[aux][i].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);
F(i,i<m) {scanf("%d%d%d",&x,&y,&z); a[x].push_back((punct){y,z}); if(x==1) d[y]=z;}
dijkstra();
F(i,i<n-1) if(d[i+2]!=inf) printf("%d ",d[i+2]); else printf("0 ");
printf("\n");
return 0;
}