Pagini recente » Cod sursa (job #918243) | Cod sursa (job #1580243) | Cod sursa (job #2394982) | Cod sursa (job #2638273) | Cod sursa (job #1006155)
#include <stdio.h>
struct nod {int val;int pret;nod *urm;};
nod *v[30001];
struct coada {int n;int p;};
coada use[30001];
int x,y,m,n,st[30001],prim ,ultim,x1,y1,p,i;
FILE *f,*g;
using namespace std;
void add (int x1,int y1,int p)
{
nod *t;
t=new nod;
t->val=y1;
t->pret=p;
t->urm=v[x1];
v[x1]=t;
t=new nod;
t->val=x1;
t->pret=p;
t->urm=v[y1];
v[y1]=t;
}
int main()
{ f=fopen ("sate.in","r");
g=fopen ("sate.out","w");
fscanf (f,"%d%d%d%d",&n,&m,&x,&y);
for (i=1;i<=m;i++)
{
fscanf (f,"%d%d%d",&x1,&y1,&p);
add (x1,y1,p);
}
use [x].n=1;
prim=1;
ultim=1;
st[prim]=x;
nod *t;
while (use [y].n==0)
{
for (t=v[st[prim]];t!=NULL;t=t->urm) if (use[t->val].n==0) {use[t->val].n=1;
if (t->val>st[prim]) use[t->val].p=use[st[prim]].p+t->pret;
else use[t->val].p=use[st[prim]].p-t->pret;
st[++ultim]=t->val;
if (t->val==y) break;}
prim ++;
}
fprintf (g,"%d",use[y].p);
return 0;
}