Cod sursa(job #304787)

Utilizator ProcopliucProcopliuc Adrian Procopliuc Data 15 aprilie 2009 13:09:56
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
# include <stdio.h>
int d[30005],v[30005],x1,x2,x,y,i,j,n,m,c[30005],q,pr,ul;
struct nod
{
int info,dist;
nod *urm;
}*a[30005],*p;
int main ()
{
freopen ("sate.in","r",stdin);
freopen ("sate.out","w",stdout);
scanf ("%i%i%i%i",&n,&m,&x1,&x2);
for (i=1;i<=m;i++)
{
scanf ("%i%i%i",&x,&y,&q);
p=new nod;
p->info=x;
if (x>y)
p->dist=q;
else
p->dist=-q;
p->urm=a[y];
a[y]=p;

p=new nod;
p->info=y;
if (y>x)
p->dist=q;
else
p->dist=-q;
p->urm=a[x];
a[x]=p;
}
pr=1;
ul=1;
c[1]=x1;
v[x1]=1;
while (pr<=ul)
{
p=a[c[pr]];

while (p)
{
if (v[p->info]==0)
{
v[p->info]=1;
ul++;
c[ul]=p->info;
d[p->info]=d[c[pr]]+p->dist;
}
p=p->urm;
}
pr++;
}
printf ("%i",d[x2]);



return 0;
}