Cod sursa(job #3268718)

Utilizator RosheRadutu Robert Roshe Data 16 ianuarie 2025 19:56:32
Problema Sate Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <utility>
#include <queue>
#include <string>

std::ifstream in("sate.in");
std::ofstream out("sate.out");

std::vector<std::vector<std::pair<int, int>>> w(100024);
int dist[30000];

void BFS(int x, int y){
  memset(dist, -1, sizeof(dist));
  std::queue<int> q;
  q.push(x);
  dist[x] = 0;
  while(!q.empty()){
    int curr = q.front();
    q.pop();
    if(curr == y) break;
    for(int i = 0; i<w[curr].size(); i++){
      if(dist[w[curr][i].first] == -1){
        q.push(w[curr][i].first);
        dist[w[curr][i].first] = dist[curr] + w[curr][i].second;
      }
    }
  }
  out << dist[y];
}

int main(){
  int N, M, x, y;
  in >> N >> M >> x >> y;
  for(int i = 0; i<M; i++){
    int a, b, k;
    in >> a >> b >> k;
    w[a].push_back(std::make_pair(b, k));
    w[b].push_back(std::make_pair(a, -k));
  }

  BFS(x, y);
}