Cod sursa(job #2370295)

Utilizator davidbejenariu2David Bejenariu davidbejenariu2 Data 6 martie 2019 11:32:27
Problema Sate Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <bits/stdc++.h>
#define NMAX 30005

using namespace std;

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

int N, M;

vector <int> Ad[NMAX];
vector <int> Cost[NMAX];

int s1, s2;

bool found;
bool viz[NMAX];

void read()
{
    int i, x, y, z;

    fin >> N >> M >> s1 >> s2;

    for ( i = 1; i <= M; ++i )
    {
        fin >> x >> y >> z;

        Ad[x].push_back( y );
        Cost[x].push_back( z );
        Ad[y].push_back( x );
        Cost[y].push_back( z );
    }

    fin.close();
}

void DFS( int nod, int dist )
{
    int i, w;

    viz[nod] = 1;

    if ( nod == s2 )
    {
        fout << dist;

        found = 1;

        return;
    }

    for ( i = 0; i < Ad[nod].size() && !found; ++i )
    {
        w = Ad[nod][i];

        if ( !viz[w] )
            if ( w > nod ) DFS( w, dist + Cost[nod][i] );
            else DFS( w, dist - Cost[nod][i] );
    }
}

int main()
{
    read();

    DFS( s1, 0 );

    fout.close();

    return 0;
}