Pagini recente » Profil M@2Te4i | Diferente pentru preoni-2007/runda-3/solutii intre reviziile 53 si 43 | Istoria paginii utilizator/rocker_nespalat | Cod sursa (job #1057072) | Cod sursa (job #67818)
Cod sursa(job #67818)
#include<stdio.h>
int n,x,y,p[100024],q[100024],mark[30001],aa,bb,cc;
long int m,i,d[100024],a[30001],poz,sol;
int main()
{
FILE *f,*g;
f=fopen("sate.in","r");
g=fopen("sate.out","w");
fscanf(f,"%d%ld%d%d",&n,&m,&x,&y);
for(i=1;i<=m;i++)
{ fscanf(f,"%d%d",&p[i],&q[i]);
fscanf(f,"%ld",&d[i]);
}
mark[x]=1;
a[x]=0;
while(!mark[y])
{
poz=1;
while(poz<=m)
{ aa=mark[p[poz]];
bb=mark[q[poz]];
cc=aa+bb;
if(cc)
{ if(aa)
{ if(p[poz]<q[poz])a[q[poz]]=a[p[poz]]+d[poz];
else a[q[poz]]=a[p[poz]]-d[poz];
mark[q[poz]]=1;
}
else
{ if(p[poz]<q[poz])a[p[poz]]=a[q[poz]]-d[poz];
else a[p[poz]]=a[p[poz]]+d[poz];
mark[p[poz]]=1;
}
p[poz]=p[m];
q[poz]=q[m];
d[poz]=d[m];
m--;
}
else poz++;
}
}
sol=a[y];
if(sol<0)sol=-sol;
fprintf(g,"%ld\n",sol);
fcloseall();
return 0;
}