Cod sursa(job #3169700)

Utilizator catalinmarincatalinmarin catalinmarin Data 15 noiembrie 2023 19:48:17
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
struct vecin{
    int nod;
    int cost;
};
int distante[30001];
vector<vecin> vecini[30005];
int x, y;
void bfs(int x){
    queue<int> q;
    q.push(x);
    while (!q.empty()){
        int frn = q.front();
        q.pop();
        for (int i = 0; i < vecini[frn].size(); i++) {
            vecin vec = vecini[frn][i];
            if (vec.nod != x && distante[vec.nod] == 0) {
                distante[vec.nod] = distante[frn] + vec.cost;
                q.push(vec.nod);
            }
            if (vec.nod == y)
                return;
        }
    }

}
int main() {
    int sate, muchii;
    fin >> sate >> muchii >> x >> y;
    if (x > y)
        swap(x, y);
    distante[x] = 0;
    for (int i = 1 ; i <= muchii; i++){
        int nod1, nod2, cost;
        fin >> nod1 >> nod2 >> cost;
        vecini[nod1].push_back({nod2, cost});
        vecini[nod2].push_back({nod1, cost});
        if (nod2 < nod1)
            vecini[nod1].back().cost *= -1;
        else
            vecini[nod2].back().cost *= -1;
    }
    bfs(x);
    fout << distante[y];
    return 0;
}