Pagini recente » Cod sursa (job #1136501) | Cod sursa (job #712328) | Cod sursa (job #1008786) | Cod sursa (job #169996) | Cod sursa (job #855343)
Cod sursa(job #855343)
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
int n,m,D[50005],p,i,inf=1<<30,A,B,C;
struct arc{int nod,dist;};
vector<arc> v[50005];
queue<int> q;
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
scanf("%d %d",&n,&m);
while(m--)
{
scanf("%d %d %d",&A,&B,&C);
v[A].push_back((arc){B,C});
}
for(i=2;i<=n;i++) D[i]=inf;
q.push(1);
while(!q.empty())
{
p=q.front();q.pop();
for(i=0;i<v[p].size();i++)
{
if(D[v[p][i].nod]>D[p]+v[p][i].dist)
{
D[v[p][i].nod]=D[p]+v[p][i].dist;
q.push(v[p][i].nod);
}
}
}
for(i=2;i<=n;i++)
if(D[i]==inf) printf("0 ");
else printf("%d ",D[i]);
return 0;
}