Cod sursa(job #2665143)

Utilizator Andrei_c765Andrei Catineanu Andrei_c765 Data 30 octombrie 2020 10:08:26
Problema Sate Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.41 kb
#include <bits/stdc++.h>

using namespace std;

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

struct muchie
{
    int nodTerminal, valoare;
};


vector <muchie> a[30005];
int n, m, x, y;
int l, c, cost;

void citire()
{
    fin >> n >> m >> x >> y;
    for (int i = 1; i <= m; i++)
    {
        fin >> l >> c >> cost;
        muchie m1;
        m1.nodTerminal = c;
        m1.valoare = cost;
        a[l].push_back(m1);
        muchie m2;
        m2.nodTerminal = l;
        m2.valoare = cost;
        a[c].push_back(m2);
    }
}

bool vizitat[30005];

int parcurgere(int start, int finall, int distanta)
{
    vizitat[start] = true;
    if (start == finall) return distanta;
    for (int i = 0; i < a[start].size(); i++)
    {
        if (vizitat[a[start][i].nodTerminal] == false)
        {
            vizitat[a[start][i].nodTerminal] = true;
            if (a[start][i].nodTerminal > start)
                return parcurgere(a[start][i].nodTerminal, finall, distanta+a[start][i].valoare);
            else return    parcurgere(a[start][i].nodTerminal, finall, distanta-a[start][i].valoare);
        }
    }

}

int main()
{
    citire();
    /**for (int i = 1; i <= n; i++)
    {
        cout << i <<": ";
        for (int j = 0; j < a[i].size(); j++)
            cout <<a[i][j].nodTerminal <<" ";
        cout << endl;
    }*/
    fout << parcurgere(x, y, 0);
}