Pagini recente » Cod sursa (job #1466061) | Cod sursa (job #2985466) | Cod sursa (job #1742758) | Cod sursa (job #2141712) | Cod sursa (job #595247)
Cod sursa(job #595247)
#include<cstdio>
#include<cstdlib>
using namespace std;
int n,m,start,final,sol[30010];
struct S{int nod,cost;} *A[30010];
S Coada[30010];
int inc=-1,sf;
bool vizitat[30010];
void BFS(int x)
{
int i,limita,y;
vizitat[x]=true;
inc++;
Coada[inc].nod=x;
Coada[inc].cost=0;
while(sf<=inc)
{
x=Coada[sf].nod;
sf++;
limita=A[x][0].nod;
for(i=1;i<=limita;i++)
{
y=A[x][i].nod;
if(vizitat[y]==false)
{
vizitat[y]=true;
if(x<=y)
sol[y]=sol[x]+A[x][i].cost;
else
sol[y]=sol[x]-A[x][i].cost;
Coada[++inc]=A[x][i];
}
}
}
}
int main()
{
int i,x,y,z;
freopen("sate.in","r",stdin);
scanf("%d %d %d %d",&n,&m,&start,&final);
for(i=1;i<=n;i++)
{
A[i]=(S *)realloc(A[i],sizeof(S));
A[i][0].nod=0;
}
for(i=1;i<=m;i++)
{
scanf("%d %d %d",&x,&y,&z);
A[x][0].nod++;
A[x]=(S *)realloc(A[x],(A[x][0].nod+1)*sizeof(S));
A[x][A[x][0].nod].nod=y;
A[x][A[x][0].nod].cost=z;
A[y][0].nod++;
A[y]=(S *)realloc(A[y],(A[y][0].nod+1)*sizeof(S));
A[y][A[y][0].nod].nod=x;
A[y][A[y][0].nod].cost=z;
}
BFS(start);
freopen("sate.out","w",stdout);
printf("%d\n",sol[final]);
return 0;
}