Cod sursa(job #2500760)

Utilizator AvramDanielAvram Daniel AvramDaniel Data 28 noiembrie 2019 17:12:50
Problema Sate Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <bits/stdc++.h>
#define fi first
#define se second

using namespace std;


int n,m,x,y,a,b,c, dist_x[30010];
bool viz[30010];

queue< int > q;

vector < pair < int, int > > v[30010];

int main(){

    ifstream cin("sate.in");
    ofstream cout("sate.out");

    cin>>n>>m>>x>>y;

    for(int i=1;i<=m;i++){
        cin>>a>>b>>c;
        v[a].push_back({b, c});
        v[b].push_back({a, c});

    }

    q.push(x);
    viz[x] = 1;
    dist_x[x] = 0;
    while(!q.empty()){

        int curr = q.front();
        q.pop();
        for(int i = 0; i < v[curr].size();i++){
            if(!viz[v[curr][i].fi]){

                if(v[curr][i].fi > curr)
                    dist_x[v[curr][i].fi] = dist_x[curr] + v[curr][i].se;
                else
                    dist_x[v[curr][i].fi] = dist_x[curr] - v[curr][i].se;
                if(v[curr][i].fi == y) {
                    cout<<dist_x[y];
                    return 0;
                }
                viz[v[curr][i].fi] = 1;
                q.push(v[curr][i].fi);
            }
        }

    }

    cout<<-1;

    return 0;
}