Cod sursa(job #2154548)

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

using namespace std;

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

void df(int nod)
{
    if(nod==y)
        ok=1;

    if(ok)
        return;

    for(auto i:A[nod])
    {
        if(!d[i.first])
        {
            d[i.first]=d[nod]+i.second;
            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);
    }
    d[x]=1;
    df(x);
    printf("%d\n",--d[y]);
    return 0;
}