Cod sursa(job #2712752)

Utilizator raul41917raul rotar raul41917 Data 26 februarie 2021 14:41:21
Problema Sate Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
using namespace std;
ifstream fi("sate.in");
ofstream fo("sate.out");
int N,M;
int X,Y;
vector <pair <int,int> > vec[30005];
int parcurs[30001];
int dist[30001];
void DFS(int x,int value)
{
    if(vec[x].size()>0)
        for(int i=0;i<=vec[x].size()-1;i++)
        {
            if(parcurs[vec[x][i].first]==0)
            {
                parcurs[vec[x][i].first]=1;
                if(vec[x][i].first>x)
                {
                    dist[vec[x][i].first]=value+vec[x][i].second;
                    DFS(vec[x][i].first,dist[vec[x][i].first]);
                }else
                {
                    dist[vec[x][i].second]=abs(value-vec[x][i].second);
                    DFS(vec[x][i].first, dist[vec[x][i].second]);
                }
            }
        }
}
int main()
{
    fi>>N>>M;
    fi>>X>>Y;
    int x,y,D;
    for(int i=1;i<=M;i++)
    {
        fi>>x>>y>>D;
        vec[x].push_back(make_pair(y,D));
        vec[y].push_back(make_pair(x,D));
    }
    parcurs[X]=1;
    DFS(X,0);
    if(dist[y]!=0)
        fo<<abs(dist[Y]-dist[X]);
    return 0;
}