Cod sursa(job #2164635)

Utilizator TooHappyMarchitan Teodor TooHappy Data 13 martie 2018 08:53:31
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <bits/stdc++.h>
using namespace std;
 
ifstream in("sate.in");
ofstream out("sate.out");

vector< pair< int, int > > G[30010];
int distante[30010], n, m, sat1, sat2;
	
void BFS() {
	queue< int > q; q.push(sat1);

	distante[sat1] = 0;
	while(!q.empty()) {
		int tempNode = q.front(); q.pop();

		for(auto vecin: G[tempNode]) {
			if(!distante[vecin.first]) {
				if(tempNode < vecin.first) {
					distante[vecin.first] = distante[tempNode] + vecin.second;
				} else {
					distante[vecin.first] = distante[tempNode] - vecin.second;
				}
				q.push(vecin.first);
			}	
		}
	}
}

int main() {

	in >> n >> m >> sat1 >> sat2;

	for(int i = 1; i <= m; ++i) {
		int  x, y, d; in >> x >> y >> d;
		G[x].push_back({y, d});
		G[y].push_back({x, d});
	}
	BFS();

	out << distante[sat2];

    in.close(); out.close();
 
    return 0;
}