Cod sursa(job #2663347)

Utilizator Guccifer2429Julien Iancu Guccifer2429 Data 26 octombrie 2020 09:10:03
Problema Sate Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.35 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
deque < pair < int, int > > graf[30005];
deque < int> coada;
int n,m,X,y,s;
void citire()
{
    fin>>n>>m>>X>>y;
    for(int i=1; i<=m; i++)
    {
        int a,b,d;
        fin>>a>>b>>d;
        graf[a].push_back(make_pair(b,d));
        graf[b].push_back(make_pair(a,-d));
    }
    /*
    for(int i=1; i<=n; i++)
    {
        fout<<i<<endl;
        for(unsigned int j=0; j<graf[i].size(); j++)
        {
            fout<<graf[i][j].first<<' '<<graf[i][j].second<<endl;
        }
    }
    */
}
int in_coada(int x)
{
    for(unsigned int i=0; i<coada.size(); i++)
    {
        if(coada[i]==x)
            return 0;
    }
    return 1;
}
void drum(int x)
{
    //fout<<s<<' '<<x<<endl;
    if(x==y)
    {
        fout<<s;
    }

    else
    {
        for(unsigned int i=0; i<graf[x].size(); i++)
        {
            ///fout<<graf[x][i].first<<' '<<graf[x][i].second<<endl;
            if(in_coada(graf[x][i].first))
            {
                s=graf[x][i].second+s;
                coada.push_back(graf[x][i].first);
                drum(graf[x][i].first);
                coada.pop_back();
                s=s-graf[x][i].second;
            }
        }
    }

}
int main()
{
    citire();
    drum(X);
}