Cod sursa(job #2195135)

Utilizator gabriel-mocioacaGabriel Mocioaca gabriel-mocioaca Data 15 aprilie 2018 14:11:32
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <list>
#include <queue>

#define cin in
#define cout out

using namespace std;

int n, m, x, y;

struct neigh {
	int s;
	int d;
};

vector<list<neigh>> graph;

void read() {
	ifstream in("sate.in");
	cin >> n >> m >> x >> y;
	graph.resize(n + 1);

	for (int k = 1; k <= m; ++k) {
		int i, j, d;
		cin >> i >> j >> d;
		graph[i].push_back({ j,d });
		graph[j].push_back({ i,d });
	}

	in.close();
}

int bfs(int x, int y) {
	queue<int> q;
	vector<bool> vis(n + 1, false);
	int d = 0, i;
	q.push(x);
	vis[x] = true;

	while (!q.empty()) {
		i = q.front();
		q.pop();

		if (i == y) {
			return d;
		}

		for (const auto it : graph[i]) {
			if (!vis[it.s]) {
				vis[it.s] = true;
				q.push(it.s);
				if (it.s > i) d = d + it.d;
				else d = d - it.d;
			}
		}
	}

}

int main() {
	ofstream out("sate.out");
	read();
	cout << bfs(x, y);
	out.close();
	
	return 0;
}