Pagini recente » Cod sursa (job #1128906) | Istoria paginii runda/sim11_2/clasament | Cod sursa (job #1684175) | Cod sursa (job #956329) | Cod sursa (job #232579)
Cod sursa(job #232579)
#include <stdio.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 (ok)
return ;
if (x==s)
{
printf("%d\n",S);
ok=1;
return ;
}
viz[x]=1;
for (nod *i=sir[x];i;i=i->urm)
{
if (!viz[i->inf])
{
// viz[i->inf]=1;
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;
}