Pagini recente » Cod sursa (job #3269508) | Cod sursa (job #2145560) | Cod sursa (job #11383) | Cod sursa (job #387689) | Cod sursa (job #674661)
Cod sursa(job #674661)
#include<stdio.h>
int N,M,a,b,c,viz[123450],coad[1234560],st,dr,l,f;
struct nod
{
int val,c;
nod* next;
} *g[123450];
void add(int x,int y,int c)
{
nod* a = new nod;
a->val=y;
a->c=c;
a->next=g[x];
g[x]=a;
}
void make(int x)
{//printf("%d ",x);
for(nod* a=g[x];a;a=a->next)
{
if(!viz[a->val])
{
if((a->val)>x)
{
viz[a->val]=viz[x]+a->c;
}
else
{
viz[a->val]=viz[x]-a->c;
}
coad[dr++]=a->val;
//printf("%d %d\n",a->val,viz[a->val]);
}
}
}
int main()
{
freopen("sate.in","r",stdin);
freopen("sate.out","w",stdout);
scanf("%d%d%d%d",&N,&M,&f,&l);
for(int i=1;i<=M;++i)
{
scanf("%d%d%d",&a,&b,&c);
add(a,b,c);
add(b,a,c);
}
coad[0]=f;
viz[f]=1;
st=0,dr=1;
while(st<dr)
{
make(coad[st]);
++st;
}
printf("%d\n",viz[l]-1);
}