Cod sursa(job #2666636)

Utilizator ADINAIOANA-BORTAAdina Borta ADINAIOANA-BORTA Data 2 noiembrie 2020 11:37:23
Problema Sate Scor 45
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <utility>

using namespace std;

const int  NMAX = 30000;
vector<int> graf[NMAX];
int x,y;
bool vizitat[NMAX];
queue<int> coada;
vector<vector<int>> distante;



void BFS(int x) {
	coada.push(x);
	vizitat[x] = true;
	while (!coada.empty()) {
		int curr = coada.front();
		coada.pop();
		for (int i = 0; i < graf[curr].size(); i++) {
			if (!vizitat[graf[curr][i]]) {
				vizitat[graf[curr][i]] = true;
				coada.push(graf[curr][i]);
				if(curr>graf[curr][i])
					distante[x][graf[curr][i]] = distante[x][curr] - distante[curr][graf[curr][i]];
				else
					distante[x][graf[curr][i]] = distante[x][curr] + distante[curr][graf[curr][i]];
			}
		}
	}

}

int main() {
	ifstream in("sate.in");
	ofstream out("sate.out");
	int n, m, a, b, d;
	in >> n >> m >> x >> y;

	distante.resize(n + 1);

	for (int i = 1; i <= n; i++) {
		distante[i].resize(n+1);
	}

	for (int i = 0; i < m; i++) {
		in >> a >> b >> d;
		graf[a].push_back(b);
		graf[b].push_back(a);
		distante[a][b] = d;
		distante[b][a] = d;
	}


	BFS(x);

	out << distante[x][y];

	return 0;
}