Cod sursa(job #726585)

Utilizator AnaTudorTudor Ana Maria Mihaela AnaTudor Data 27 martie 2012 12:38:52
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<stdio.h>
#include<vector>
#include<queue>
# define Max 30001
using namespace std;
vector < pair < int ,int > > a[Max];
queue <int> C;
int viz[Max],d[Max],y;

void bf(int x)
{ C.push(x);
  viz[x]=1;
  int z;
   while(!C.empty() && z!=y)
     { z=C.front();
      C.pop();
        for(int i=0;i<a[z].size();++i)
          { if (!viz[a[z][i].first])
              { d[a[z][i].first]= d[z] + a[z][i].second;
                 viz[a[z][i].first]=1;
                 C.push(a[z][i].first);

              }
          }
     }
}

int main()
{ int n,m,x,y;
int s,b,c;
freopen("sate.in","r",stdin);
freopen("sate.out","w",stdout);

scanf("%d%d%d%d",&n,&m,&x,&y);
for(int i=1;i<=m;++i)
  { scanf("%d%d%d",&s,&b,&c);
      a[s].push_back(make_pair(b,c));
      a[b].push_back(make_pair(s,-c));
  }
bf(x);
printf("%d",d[y]);
}