Cod sursa(job #2353429)

Utilizator noperestayadelin mihoc noperestay Data 24 februarie 2019 11:59:23
Problema Sate Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <algorithm>

#define nLim 30005

using namespace std;

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

int n, m, start, final;

vector<vector<int> > kilometri(22000, vector<int>(22000) );

vector < int > muchii[nLim];

int distanta[nLim];

queue < int > coada;

void BFS() {

	int nod, vecin;

	while (!coada.empty()) {
		nod = coada.front();
		coada.pop();
		for (unsigned int i = 0; i < muchii[nod].size(); i++) {
			vecin = muchii[nod][i];
			if (distanta[vecin] == -1) {
				coada.push(vecin);
				distanta[vecin] = distanta[nod] + kilometri[nod][vecin];
			}
		}
	}
}

int nodfinal;

void citire() {
	int nodStart;
	f >> n >> m >> nodStart >> nodfinal;
	for (int i = 1; i <= m; i++) {
		int x, y, dist;
		f >> x >> y >> dist;
		muchii[x].push_back(y);
		muchii[y].push_back(x);

		if (x > y)
			swap(x, y);
		kilometri[x][y] = dist;
		kilometri[y][x] = -dist;

	}
	for (int i = 1; i <= n; i++)
		distanta[i] = -1;
	distanta[nodStart] = 0;
	coada.push(nodStart);
}

int main() {

	citire();

	BFS();

	//for (int i = 1; i <= n; i++)
		g << distanta[nodfinal] << " ";

	return 0;

}