Cod sursa(job #3247699)

Utilizator Commander_XDunel Stefan-Octavian Commander_X Data 8 octombrie 2024 20:27:11
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#include <vector>
#include <queue>

std::ifstream fin("sate.in");
std::ofstream fout("sate.out");

using namespace std;

vector<vector<pair<int, int>>> G;
vector<int> dist;
queue<int> Q;
int n, m, X, Y;
void read_graph()
{
	int x, y, cost;
	fin >> n >> m >> X >> Y;
	G.resize(n + 1);
	dist.resize(n + 1, -1);
	for (int i = 1; i <= m; ++i)
	{
		fin >> x >> y >> cost;
		G[x].push_back({ y,cost });
		G[y].push_back({ x,cost });
	}
}
void BFS(int start)
{
	Q.push(start);
	dist[start] = 0;
	while (!Q.empty())
	{
		for (auto vecin : G[Q.front()])
			if (dist[vecin.first] == -1)
			{
				if (vecin.first < Q.front())
					dist[vecin.first] = dist[Q.front()] - vecin.second;
				else
					dist[vecin.first] = dist[Q.front()] + vecin.second;
				Q.push(vecin.first);
			}
		Q.pop();
	}
}
void solve()
{
	BFS(X);
	fout << dist[Y];
}
int main()
{
	read_graph();
	solve();
}