Cod sursa(job #2002637)

Utilizator CMCmasterCatalin Costescu CMCmaster Data 20 iulie 2017 14:36:24
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>
#include <stack>

using namespace std;

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

struct dist
{
    int d;
    short s;
};

stack<dist> v[30000];

int findDist(int x,int y,int d = 0)
{
    if(v[x].size() == 0) return 0;
    if(x == y) return d;

    int r = 0;
    dist dst;
    while(v[x].size() > 0 && r == 0)
    {
        dst = v[x].top();
        v[x].pop();
        if(dst.s < x) r = findDist(dst.s,y,d - dst.d);
        else r = findDist(dst.s,y,d + dst.d);
    }

    return r;

}

int main()
{
    int n,m,x,y;

    in>>n>>m>>x>>y;

    int i;
    for(i=0; i<m; i++)
    {
        int a,b,l;
        in>>a>>b>>l;

        dist dst;
        dst.d = l;
        dst.s = b;
        v[a].push(dst);
        dst.s = a;
        v[b].push(dst);
    }

    out<<findDist(x,y);

    return 0;
}