Pagini recente » Cod sursa (job #202918) | Monitorul de evaluare | Profil Robert_Mitri | Cod sursa (job #98745) | Cod sursa (job #183896)
Cod sursa(job #183896)
#include<stdio.h>
#include<stdlib.h>
#define in "sate.in"
#define out "sate.out"
struct nod{
int inf,dist;
nod *next;
} *l[30001];
long n,X,Y,m,suma;
int s[30001];
void add(int,int,int);
void df(int);
int main()
{
freopen(in,"r",stdin);
freopen(out,"w",stdout);
int i,x,y,z;
scanf("%ld%ld%ld%ld",&n,&m,&X,&Y);
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);
}
df(X);
return 0;
}
void add(int x,int y,int z)
{
nod *p=new nod;
p->inf=x;
p->dist=z;
p->next=l[y];
l[y]=p;
p=new nod;
p->inf=y;
p->dist=z;
p->next=l[x];
l[x]=p;
}
void df(int nodc)
{
int prec,distanta;
if(nodc==Y)
{
printf("%ld",suma);
exit(0);
}
s[nodc]=1;
nod *p=l[nodc];
while(p)
{
if(!s[p->inf])
{
distanta=p->dist;
prec=p->inf;
if(nodc>p->inf)
suma-=distanta;
else
suma+=distanta;
df(p->inf);
if(nodc>prec)
suma+=distanta;
else
suma-=distanta;
}
p=p->next;
}
}