Cod sursa(job #2929291)

Utilizator raileanu-alin-gabrielRaileanu Alin-Gabriel raileanu-alin-gabriel Data 25 octombrie 2022 15:00:14
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
#include <queue>
#include <vector>

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

long long d[200005];
queue<long long> c;
vector<pair<int, long long>> v[200005];
long long n, m, x, y;

void bfs(int nod);

int main()
{
  int i, a, b, c;
  fin>>n>>m>>x>>y;
  for(i=1; i<=m; i++)
  {
    fin>>a>>b>>c;
    v[a].push_back({b,c});
    v[b].push_back({a,c});
  }
  if(x>y) swap(x,y);
  bfs(x);
  fout<<abs(d[y])<<'\n';
  return 0;
}

void bfs(int nod)
{
  int p;
  d[nod]=0;
  c.push(nod);
  while(!c.empty())
  {
    p=c.front();
    for(auto i:v[p])
    {
      if(d[i.first]==0)
      {
        if(p>i.first) d[i.first]=d[p]-i.second;
        else d[i.first]=d[p]+i.second;
        c.push(i.first);
      }
    }
    c.pop();
  }
}