Cod sursa(job #2933556)

Utilizator Paul281881818818181991919191881818Draghici Paul Paul281881818818181991919191881818 Data 5 noiembrie 2022 11:45:11
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
//problema sate
#include <fstream>
#include <vector>
#include <queue>
#define N 30002
using namespace std;
ifstream cin("sate.in");
ofstream cout("sate.out");
vector<pair<int, int> > V[N];
int n, m, X, Y;
int viz[N], dist[N];
void BFS(int node){
    viz[node] = true;
    queue<int> Q;
    Q.push(node);
    while(!Q.empty()){
        node = Q.front();
        for (vector<pair<int, int> >::iterator it = V[node].begin(); it != V[node].end(); it++){
            if(!viz[(*it).first]){
                viz[(*it).first] = true;
                if((*it).first > node){
                    dist[(*it).first] = dist[node] + (*it).second;
                }
                else{
                    dist[(*it).first] = dist[node] - (*it).second;
                }
                Q.push((*it).first);
            }
        }
        Q.pop();
    }
}
int main(){
    cin >> n >> m >> X >> Y;
    for (int i = 0; i < m; i++){
        int x1, x2, Dist;
        cin >> x1 >> x2 >> Dist;
        V[x1].push_back(make_pair(x2, Dist));
        V[x2].push_back(make_pair(x1, Dist));
    }
    dist[X] = 0;
    BFS(X);
    cout << dist[Y] ;
    return 0;
}