Cod sursa(job #2798388)

Utilizator LuxinMatMatasaru Luxin Gabriel LuxinMat Data 11 noiembrie 2021 11:36:45
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<fstream>
#include<vector>
#include<queue>
using namespace std;

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

vector<pair<int, int>> v[30001];
bool viz[30001];
int dist[30001];
deque<int> coada;

int bfs(int x, int y)
{
    coada.push_back(x);
    viz[x] = true;
    while(coada.size())
    {
        int nr = coada.front();
        coada.pop_front();
        int lim = v[nr].size();
        for(int i=0; i<lim; i++)
        {
            int vecin = v[nr][i].first;
            int cost = v[nr][i].second;
            if(viz[vecin] == false)
            {
                viz[vecin] = true;
                if(vecin > nr)
                    dist[vecin] = dist[nr] + cost;
                else
                    dist[vecin] = dist[nr] - cost;
                coada.push_back(vecin);
            }
        }
    }
    return dist[y];
}

int main()
{
    int n, m, x, y;
    cin>>n>>m>>x>>y;
    for(int i=1; i<=m; i++)
    {
        int a, b, d;
        cin>>a>>b>>d;
        v[a].push_back({b, d});
        v[b].push_back({a, d});
    }
    cout<<bfs(x, y);
    return 0;
}