Pagini recente » Cod sursa (job #1323356) | Cod sursa (job #1881004) | Cod sursa (job #754774) | Cod sursa (job #1725892) | Cod sursa (job #232580)
Cod sursa(job #232580)
#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;
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)
{
if (x==s)
{
printf("%d\n",S);
exit(1);
}
viz[x]=1;
for (nod *i=sir[x];i;i=i->urm)
{
if (!viz[i->inf])
{
if (i->inf>x)
{
S+=i->sum;
cauta(i->inf);
S-=i->sum;
}
else
{
S-=i->sum;
cauta(i->inf);
S+=i->sum;
}
}
}
viz[x]=0;
}
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;
}