Cod sursa(job #2918503)

Utilizator BlueLuca888Girbovan Robert Luca BlueLuca888 Data 11 august 2022 17:27:16
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <bits/stdc++.h>
#pragma GCC optimize ("Ofast")

using namespace std;

ifstream fin  ("sate.in");
ofstream fout ("sate.out");

const int MAX_N = 30005;
int n, m, start, finish, x, y, d;

struct edge{
    int nxt;
    int len;
}; vector <edge> v[MAX_N];

const int INF = 2e9;
int dist[MAX_N];
inline void bfs(){
    int nod;
    queue <int> q;

    for(int i=1; i<=n; i++)
        if(i != start)
            dist[i] = INF;

    q.push(start);
    while(!q.empty()){
        nod = q.front();
        q.pop();

        if(nod == finish)
            break;

        for(auto vecin : v[nod]){
            if(dist[vecin.nxt] == INF){
                if(vecin.nxt < nod)
                    dist[vecin.nxt] = dist[nod] - vecin.len;
                else
                    dist[vecin.nxt] = dist[nod] + vecin.len;
                q.push(vecin.nxt);
            }
        }
    }
}

int main (){
    ios_base::sync_with_stdio(false);
    fin.tie(nullptr), fout.tie(nullptr);

    fin>>n>>m>>start>>finish;
    for(int e=1; e<=m; e++){
        fin>>x>>y>>d;
        v[x].push_back({y, d});
        v[y].push_back({x, d});
    }

    bfs();
    fout<<dist[finish];
    return 0;
}