Cod sursa(job #1168281)

Utilizator radulescu.serbanRadulescu Serban radulescu.serban Data 7 aprilie 2014 20:06:37
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <fstream>

using namespace std;

ifstream in("sate.in");
ofstream out("sate.out");


struct nod
{
    long info,d;
    nod *next;
};


long viz[30001],n,m,x,y;
nod *v[30001],*p;


void citire()
{
    long a,b,di,i;
    in >> n >> m >> x >> y;
    for(i = 1 ; i <= m ; i++)
    {
        in >> a >> b >> di;
        p = new nod;
        p->info = a;
        p->d = di;
        p->next = v[b];
        v[b] = p;
        p = new nod;
        p->info = b;
        p->d = di;
        p->next = v[a];
        v[a] = p;
    }
}

void df(int st,int di)
{
    nod *p;
    if(st == y)
    {
        out << di;
        return;
    }
    viz[st] = 1;
    for(p = v[st] ; p != NULL ; p = p->next)
    {
        if(!viz[p->info])
        {
            if(p->info < st)
            {
                di = di - p->d;
                df(p->info,di);
                di = di + p->d;
            }
            else
            {
                di = di + p->d;
                df(p->info,di);
                di = di - p->d;
            }
        }
    }
}

int main()
{
    citire();
    /*if(y < x)
    {
        int k = x;
        x = y;
        y = k;
    }
    */
    df(x,0);
    return 0;
}