Cod sursa(job #1163753)

Utilizator RaduGabriel2012Dinu Radu RaduGabriel2012 Data 1 aprilie 2014 16:52:16
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
  int n,m,dist[30005],li,lf;
  bool was[30005];
  vector <int> v[30005],c[30005];
  queue <int> q;
 void BFS()
  { int i,x,y;
      while(!q.empty())
      {  x=q.front(); q.pop();
        for(i=0;i<v[x].size();i++)
          { y=v[x][i];

           if (!was[y])
            { was[y]=1;
               if (x<y)
                dist[y]=dist[x]+c[x][i];
                 else dist[y]=dist[x]-c[x][i];
              q.push(y);
               if (y==lf) return;
            }
          }
      }

  }

int main()
{ int i,x,y,d;
    f>>n>>m>>li>>lf;
   if (li!=lf)
     {
     for(i=1;i<=m;i++)
      { f>>x>>y>>d;
         v[x].push_back(y);
         c[x].push_back(d);
         v[y].push_back(x);
         c[y].push_back(d);
      }

    q.push(li); was[li]=1;

     BFS();
     }
  g<<dist[lf];

    return 0;
}