Cod sursa(job #800814)

Utilizator zeeboBuzatu Vlad zeebo Data 22 octombrie 2012 18:57:07
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
#include <vector>
#include <queue>
#define pb push_back
using namespace std;
ifstream f("sate.in");
ofstream h("sate.out");
vector <int> g[30001];
queue <int> q;
int n,m,a,b,x,y,d,i,t[30001],s;
bool sel[30001];
void bf (int x)
{
    int nod;
    vector <int> :: iterator it;
    q.push(x); sel[x]=true; t[x]=0;
    while (q.back()!=b)
    {

        nod=q.back();
        for (it=g[nod].begin();it!=g[nod].end();it+=2)
          if ( !sel[*it])
          {
              q.push(*it);
              sel[*it]=true;
              t[*it]=nod;
          }
    }
}
int main()
{
vector <int> :: iterator it;
f>>n>>m>>a>>b;
     for (i=1;i<=m;i++)
     {
         f>>x>>y>>d;
         g[x].pb(y);
         g[x].pb(d);
         g[y].pb(x);
         g[y].pb(d);
     }
    bf(a);
x=b;
s=0;
while (x!=a)
{
    it=g[x].begin();
      while (*it!=t[x]) it+=2;
      it++;
   if (x>t[x]) s+=*it; else s-=*it;
   x=t[x];
}
h<<s<<'\n';
return 0;
}