Cod sursa(job #2712754)

Utilizator raul41917raul rotar raul41917 Data 26 februarie 2021 14:46:58
Problema Sate Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 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[30005];
int dist[30005];
void DFS(int x,int value)
{
    for(int i=0;i<vec[x].size();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<<dist[Y];
    return 0;
}