Cod sursa(job #2298582)

Utilizator MDiana15Diana M MDiana15 Data 8 decembrie 2018 11:31:50
Problema Sate Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <bits/stdc++.h>
#define NMAX 30010
using namespace std;
queue <int> q;
 vector < pair <int,int> > v[NMAX];
 int n , m , i , j  , x  ,dist , start , finish , y;
int d[NMAX];
bool use[NMAX];
void bf(int s)
{
    use[s] = true ;
    q.push(s) ;
    while (!q.empty())
    {
        int nod = q.front();
        q.pop() ;
        int len = v[nod].size();
        for (i = 0 ; i < len ; ++ i)
        {
                int vecin = v[nod][i].first;
                if (!use[vecin])
                {
                    use[vecin] = true;
                    d[vecin] = d[nod] + v[nod][i].second;
                    q.push(vecin);
                }
        }
        if (nod == finish) break ;
    }

}
int main()
{
    freopen("sate.in" , "r" , stdin) ;
    freopen("sate.out" , "w" , stdout) ;
  scanf ("%d %d %d %d" , &n , &m , &start , &finish);
   for(i=1;i<=m;i++)
   {
       scanf("%d %d %d" , &x, &y , &dist);
       v[x].push_back({y,dist}); // Se duce catre y;
       v[y].push_back({x, -dist}); // Se intoarce x;
   }
    if (start == finish) {printf("%d " , 0) ; return 0 ;}
    bf(start) ;
    printf("%d " , d[finish]);
    // <3
    return 0;
}