Cod sursa(job #2154546)

Utilizator UnseenMarksmanDavid Catalin UnseenMarksman Data 7 martie 2018 04:59:43
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <cstdio>
#include <vector>
#include <queue>
#define N 30002

using namespace std;

int n, m, x, y, d[N];
bool ok=1;
vector<pair<int,int>>A[N];
queue<int>Q;

void df(int nod)
{
    if(ok)
    {
        for(auto i:A[nod])
        {
            if(!d[i.first])
            {
                d[i.first]=d[nod]+i.second;
                if(i.first==y)
                {
                    ok=0;
                }
                else
                {
                    df(i.first);
                }
            }
        }
    }
}

int main()
{
    freopen("sate.in", "r", stdin);
    freopen("sate.out", "w", stdout);

    scanf("%d %d %d %d", &n, &m, &x, &y);
    for(int i=1; i<=m; i++)
    {
        int n1,n2,n3;
        scanf("%d %d %d", &n1, &n2, &n3);
        A[n1].push_back({n2,n3});
        A[n2].push_back({n1,-n3});
    }
    if(y<x)
    {
        swap(x,y);
    }
    df(x);
    printf("%d\n",d[y]);
    return 0;
}