Cod sursa(job #2572795)

Utilizator Alex2421Nedelcu Alexandru Alex2421 Data 5 martie 2020 14:22:02
Problema Sate Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <bits/stdc++.h>

#define pb push_back
#define pp pop_back
#define mp make_pair

using namespace std;

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

int const lim = 30001;
int n,m,st,fn,d[lim];
vector < pair < int , int >  > c[lim];
queue < int > q;

void bfs(int nod)
{
    q.push(nod);
    d[nod]=0;

    while( !q.empty() )
    {
        int x=q.front();
        q.pop();

        for(int i=0;i<c[x].size();i++)
        {
            if(d[c[x][i].first]==-1)
            {
              if(c[x][i].first>x)  d[c[x][i].first]=d[x]+c[x][i].second;
              else d[c[x][i].first]=d[x]-c[x][i].second;
                q.push(c[x][i].first);
            }
        }
    }
}

int main()
{
   in>>n>>m>>st>>fn;
   for(int i=1;i<=m;i++)
   {
       int x,y,z;
       in>>x>>y>>z;
       if(x>y)
       {
           c[x].pb(mp(y,z));
           c[y].pb(mp(x,z));
       }
       else
       {
           c[x].pb(mp(y,z));
           c[y].pb(mp(x,z));
       }
   }

   for(int i=1;i<=n;i++)
    d[i]=-1;

   bfs(st);

   out<<d[fn];
}