Cod sursa(job #3372435)

Utilizator george6115Gall George Cosmin george6115 Data 3 noiembrie 2026 21:02:25
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
constexpr int NMAX = 100001;
ifstream fin("sate.in");
ofstream fout("sate.out");
int N,M,X,Y;
vector<vector<pair<int,int>>>lista;
vector<int> pozitii;

void citire(){
	fin>>N>>M>>X>>Y;
	lista.resize(N+1);
	pozitii.resize(N+1, -1);
	auto cm = M;
	while(cm){
		int i, j, D;
		fin>>i>>j>>D;
		lista[i].push_back({j,D});
		lista[j].push_back({i,D});
		cm--;
	}
}

void dfs(int numar) {
    vector<int> stiva;
    stiva.push_back(numar);
	pozitii[numar]=0;
	
	while (!stiva.empty()) {
        auto nod_curent = stiva.back();
        stiva.pop_back();
		for (auto x : lista[nod_curent]) {
			if (pozitii[x.first]==-1){
				if (x.first < nod_curent )
					pozitii[x.first]=pozitii[nod_curent]-x.second;
				else
					pozitii[x.first]=pozitii[nod_curent]+x.second;
				stiva.push_back(x.first);
			}
		}
	}
}


int main(){
	citire();
	dfs(X);
	fout<<abs(pozitii[Y]);
	return 0;
}