Pagini recente » Cod sursa (job #2734904) | Cod sursa (job #1977695) | Cod sursa (job #2693761) | Cod sursa (job #16309) | Cod sursa (job #297665)
Cod sursa(job #297665)
#include<stdio.h>
int n,x,y,xx,yy,s,d;
long m,dist[2500],aux,c,a[2500][2500],p[2500],b[2500];
void BF(int k,int k2)
{
b[1]=k;
p[k]=1;
s=d=1;
while(s<=d && !p[k2])
{
for(int i=1; i<=n && !p[k2] ; i++)
if( !p[i] && a[b[s]][i]!=32000 )
{
p[i]=1;
d++;
b[d]=i;
if(i>b[s]) dist[i]=dist[b[s]]+a[b[s]][i];
else dist[i]=dist[b[s]]-a[b[s]][i];
}
s++;
}
printf("%ld",dist[k2]);
}
int main()
{
freopen("sate.in","r",stdin);
freopen("sate.out","w",stdout);
scanf("%d%ld%d%d",&n,&m,&x,&y);
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
a[i][j]=32000;
for(int i=1; i<=m; i++)
{ scanf("%d%d%ld",&xx,&yy,&c); a[xx][yy]=a[yy][xx]=c; }
if(x<y) BF(x,y);
else BF(y,x);
// printf("\n\n");
// for(int i=1; i<=n; i++)
// printf("%ld ",b[i]);
//
// printf("\n\n");
// for(int i=1; i<=n; i++)
// {for(int j=1; j<=n; j++)
// printf("%6d ",a[i][j]);
// printf("\n");
// }
//
//printf("%d",n);
return 0;
}