Cod sursa(job #2933505)

Utilizator cberindeCodrin Berinde cberinde Data 5 noiembrie 2022 11:17:56
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fi("sate.in");
ofstream fo("sate.out");

int n, m, x, y;
bool vizi[30001];
bool stop;

vector<vector<pair<int,int>>> adi;

void citire() {
    fi >> n >> m >> x >> y;
    int a, b, c;
    for(int i = 0; i <= n; i++) {
        adi.push_back({});
    }

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

void dfs(int nod, int dist) {
    if(stop)
        return;
    if(nod == y) {
        fo << dist;
        stop = true;
    }
    vizi[nod] = true;
    for(int i = 0; i < adi[nod].size(); i++) {
        int nou = adi[nod][i].first;
        if(!vizi[nou]) {
            if(nou < nod)
                dfs(nou, dist - adi[nod][i].second);
            else {
                dfs(nou, dist + adi[nod][i].second);
            }
        }
    }
}

int main() {
    stop = false;
    citire();
    dfs(x, 0);
    return 0;
}