Cod sursa(job #3371357)

Utilizator Alex112358Glavan Alexandru Alex112358 Data 29 octombrie 2026 21:38:19
Problema Sate Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <stack>

using namespace std;

int N, M, X, Y;
vector<vector<pair<int,int>>> muchii;
int vizitat[30000];
stack<int> stiva;
long long distante[30000];

ifstream f("sate.in");
ofstream g("sate.out");

void bfs()
{
	if (stiva.empty() || stiva.top() == Y) return;

	int nod = stiva.top();
	vizitat[nod] = 1;
	stiva.pop();

	for (auto [nod2, Dist] : muchii[nod])
		if (!vizitat[nod2])
		{
			stiva.push(nod2);
			distante[nod2] += Dist + distante[nod];
		}
	bfs();

}

int main() {

	f >> N >> M >> X >> Y;
	muchii.resize(N + 1);
	for (int i = 1; i <= M; i++)
	{
		int n1, n2, D;
		f >> n1 >> n2>> D;
		muchii[n1].push_back({ n2,D });
		muchii[n2].push_back({ n1,-D });
	}

	stiva.push(X);
	bfs();
	
	g << distante[Y];
	
	
	return 0;
}