Pagini recente » Cod sursa (job #1641696) | Cod sursa (job #1768658) | Cod sursa (job #1690152) | Cod sursa (job #595414) | Cod sursa (job #232583)
Cod sursa(job #232583)
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int n,m,s,p;
struct nod
{
int inf,sum;
nod *urm;
}*sir[30010];
int viz[30100],S,ok,coada[30100],dist[30100];
void baga(int a,int b,int c)
{
nod * q=new nod;
q->inf=a;
q->sum=b;
q->urm=sir[c];
sir[c]=q;
}
void citire()
{
int a,b,c;
for (int i=0;i<m;i++)
{
scanf("%d %d %d",&a,&b,&c);
baga(a,c,b);
baga(b,c,a);
}
}
void cauta(int x)
{
coada[0]=x;
int nr=1;
int dd=0;
while (!dist[s])
{
viz[coada[dd]]=1;
for (nod *i=sir[coada[dd]];i;i=i->urm)
{
if (viz[i->inf]==0)
{
if (i->inf>coada[dd])
dist[i->inf]=dist[coada[dd]]+i->sum;
else
dist[i->inf]=dist[coada[dd]]-i->sum;
viz[i->inf]=1;
coada[nr++]=i->inf;
}
}
dd++;
}
printf("%d\n",dist[s]);
}
int main ()
{
freopen ("sate.in","r",stdin);
freopen ("sate.out","w",stdout);
scanf ("%d %d %d %d",&n,&m,&p,&s);
citire();
cauta(p);
return 0;
}