Cod sursa(job #2858182)

Utilizator Remus.RughinisRemus Rughinis Remus.Rughinis Data 27 februarie 2022 10:25:47
Problema Sate Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <iostream>
#include <vector>
#define NMAX 30000
#define MMAX 100024

using namespace std;

vector<int> graph[NMAX], cost[NMAX];
int c[MMAX],d[NMAX];

int main(){
  int n,m,x,y,a,b,i,st,dr,cs;
  FILE *fin, *fout;

  fin = fopen("sate.in","r");
  fscanf(fin, "%d%d%d%d",&n,&m,&x,&y);

  x--;
  y--;

  for(i = 0; i < n; i ++){
    fscanf(fin, "%d%d%d",&a,&b,&cs);

    graph[a-1].push_back(b-1);
    cost[a-1].push_back(cs);

    graph[b-1].push_back(a-1);
    cost[b-1].push_back(-cs);
  }
  fclose(fin);

  st = 0;
  dr = 1;
  c[0] = x;
  d[0] = 1;

  while(st < dr && d[y] == 0){
    for(i = 0; i < (int)graph[c[st]].size(); i ++){
      if(d[ graph[c[st]][i] ] == 0){
        d[ graph[c[st]][i] ] = d[c[st]] + cost[c[st]][i];
        c[dr] = graph[c[st]][i];
        dr ++;
      }
    }

    st++;
  }

  fout = fopen("sate.out","w");
  fprintf(fout, "%d\n",d[y] -1);
  fclose(fout);

  return 0;
}