Cod sursa(job #2585605)

Utilizator rares404AlShaytan - Balasescu Rares rares404 Data 19 martie 2020 10:55:41
Problema Sate Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
//
//  main.cpp
//  sate
//
//  Created by Eusebiu Rares on 19/03/2020.
//  Copyright © 2020 Eusebiu Rares. All rights reserved.
//

#include <iostream>
#include "fstream"
#include "queue"
#include "vector"

std::fstream in ("sate.in", std::ios::in) ;
std::fstream out ("sate.out", std::ios::out) ;

const int MV = 3e4 ;

std::vector<std::pair<int, int> > G[MV + 1] ;
std::bitset<MV + 1> seen ;
int sol[MV + 1] ;

int main(int argc, const char * argv[]) {
	int n, m, x, y ;
	in >> n >> m >> x >> y ;
	int a, b, d ;
	for (int i = 1 ; i <= m ; ++ i) {
		in >> a >> b >> d ;
		G[a].push_back({b, d}) ;
		G[b].push_back({a, -d}) ;
	}
	std::queue<int> Q ;
	Q.push(x) ;
	seen[x] = 1 ;
	while (!Q.empty()) {
		int node = Q.front() ; Q.pop() ;
		for (auto it : G[node]) {
			if (!seen[it.first]) {
				sol[it.first] = sol[node] + it.second ;
				Q.push(it.first) ;
				if (it.first == y) {
					out << sol[y] ;
					return 0 ;
				}
			}
		}
	}
}