Cod sursa(job #1073753)

Utilizator vyrtusRadu Criuleni vyrtus Data 6 ianuarie 2014 19:45:36
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>
#include <vector>
#include <deque>
#include <cstdlib>

using namespace std;

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

int n,m,start,finish;
vector <pair<int,int> > drum[100025];
deque <int> coada;
long long val[30001] = {0};

int main()
{
    f >> n >> m >> start >> finish;
     for (int i=1; i<=m ; i++)
     {
         int x,y,c;
          f >> x >> y >> c;
           drum[x].push_back(make_pair(y,c));
           drum[y].push_back(make_pair(x,c));
     }

   coada.push_back(start);

   while (!val[finish])
   {
      int oras = coada.front();

       for (int i=0; i<drum[oras].size();i++ )
       {
           if (!val[drum[oras][i].first] )
            {
                 coada.push_back(drum[oras][i].first);
               if (oras < drum[oras][i].first ) val[drum[oras][i].first] = val[oras] + drum[oras][i].second;
                                        else    val[drum[oras][i].first] = val[oras] - drum[oras][i].second;
            }
       }

    coada.pop_front();
   }

g << abs(val[finish]) ;

    return 0;
}