Pagini recente » Cod sursa (job #2631365) | Cod sursa (job #73991) | Cod sursa (job #1751119) | Cod sursa (job #1178241) | Cod sursa (job #495630)
Cod sursa(job #495630)
#include<cstdio>
using namespace std;
struct NodGR
{
int inf,pd;
struct NodGR* next;
};
typedef NodGR* NGR;
NGR a[50001];
int viz[50001],C[50001],N,M,i;
void read();
void solve();
void adaug(int x,int y,int p);
int main()
{
freopen ("dijkstra.in","r",stdin);
freopen ("dijkstra.out","w",stdout);
read();
solve();
for (i=2;i<=N;++i)
printf("%ld ",viz[i]);
return 0;
}
void adaug(int x,int y,int p)
{
NGR q=new NodGR;
q->inf=y;
q->pd=p;
q->next=a[x];
a[x]=q;
}
void read()
{
int x,y,p;
scanf("%ld%ld",&N,&M);
for (i=1;i<=M;++i)
{
scanf("%ld%ld%ld",&x,&y,&p);
adaug(x,y,p);
}
}
void DJK(int x)
{
NGR i;
int p,u,z;
p=u=1;
C[p]=x;
viz[x]=0;
while (p<=u)
{
z=C[p++];
for (i=a[z];i;i=i->next)
if (viz[i->inf]==0||viz[i->inf]>viz[z]+i->pd)
{
C[++u]=i->inf;
viz[i->inf]=viz[z]+i->pd;
}
}
}
void solve()
{
int i;
for (i=1;i<=N;++i)
if (viz[i]==0)
DJK(i);
}