Cod sursa(job #1842258)

Utilizator PaulStighiStiegelbauer Paul-Alexandru PaulStighi Data 6 ianuarie 2017 18:49:50
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<fstream>
#include<iostream>
#include<vector>
#define NMax 30005
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");

int N,M,X,Y;
int Dist[NMax];
bool Use[NMax];

vector < pair <int,int> > G[NMax];

void Read()
{
    fin>>N>>M>>X>>Y;

    for(int i = 1 ; i <= M ; ++i)
    {
        int a,b,d;  fin>>a>>b>>d;

        G[a].push_back(make_pair(b,d));
        G[b].push_back(make_pair(a,d));
    }
}

void DFS(int Nod)
{
    Use[Nod] = 1;

    for(int i = 0 ; i < (int) G[Nod].size() ; ++i)
    {
        int Vecin = G[Nod][i].first;
        int d = G[Nod][i].second;

        if(!Use[Vecin])
        {
            if(Vecin < Nod) Dist[Vecin] = Dist[Nod] - d;
            else            Dist[Vecin] = Dist[Nod] + d;

            DFS(Vecin);
        }
    }
}

void Solve()
{
    DFS(X);
}

void Print()
{
    fout<<Dist[Y]<<"\n";
}

int main()
{
    Read();
    Solve();
    Print();

    fin.close();
    fout.close();
    return 0;
}