Cod sursa(job #3164591)

Utilizator Allie28Radu Alesia Allie28 Data 3 noiembrie 2023 19:22:37
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
const int LMAX = 30005;
vector <pair<int,int>> L[LMAX];
int x,y, dist[LMAX];
bool viz[LMAX];

void bfs() {
  queue <int> Q;
  Q.push(x);
  viz[x] = true;
  while (!Q.empty() && !dist[y]) {
    int node = Q.front();
    Q.pop();
    for (pair<int,int> vec : L[node]) {
    if (!viz[vec.first]) {
    viz[vec.first] = true;
      if (vec.first < node) {
        dist[vec.first] =dist[node]-vec.second;
      }
      else {
        dist[vec.first] = dist[node] + vec.second;
      }
      Q.push(vec.first);
    }
    }
  }
  
}

int main() {

  int n, m;
  fin>>n>>m>>x>>y;
  for (int i = 0; i<m;i++) {
    int a,b,c;
    fin>>a>>b>>c;
    L[a].push_back({b,c});
    L[b].push_back({a,c});
  }
  bfs();
  fout<<dist[y];
  fin.close();
  fout.close();
  
  return 0;
}