Cod sursa(job #2250843)

Utilizator denmirceaBrasoveanu Mircea denmircea Data 30 septembrie 2018 19:08:56
Problema Sate Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <iostream>
#include <fstream>
#include <vector>
#define dim 30001
using namespace std;
ifstream fin ("sate.in");
ofstream fout("sate.out");
vector <int> L[dim];
int x,y,n,m,v[dim],c[dim],nod,p,u,t[dim],i,num,q,r,valori[100025],aux,k,sum;
unsigned short cost[dim][dim];

void bfs (int a)
{
    p=1;
    u=1;
    v[a]=1;
    c[1]=a;
    while(p<=u){
        for(i=0;i<L[c[p]].size();i++)
        {
            nod=L[c[p]][i];
            if(v[nod]==0)
            {
                v[nod]=1;
                t[nod]=c[p];
                u++;
                c[u]=nod;
            }
        }

p++;
    }
}
int main()
{
  fin>>n>>m>>q>>r;
  if(q>r)
  {
      aux=q;
      q=r;
      r=aux;
  }
  for(i=1;i<=m;i++)
  {
      fin>>x>>y>>num;
      L[x].push_back(y);
      L[y].push_back(x);
      ++k;
      cost[x][y]=cost[y][x]=k;
      valori[k]=num;
  }
  bfs(q);
  sum=0;
  nod=r;
  while(t[nod]!=0)
  {
      if(t[nod]<nod)
        sum+=valori[cost[t[nod]][nod]];
      else
        sum-=valori[cost[nod][t[nod]]];
      nod=t[nod];
  }
  fout<<sum;
}