Cod sursa(job #499340)

Utilizator IULIABRIGITABARTA IULIA-BRIGITA IULIABRIGITA Data 9 noiembrie 2010 17:40:02
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
queue<int> Q;
vector<pair<int,int> > V[1<<15];
int n,m,x,y,a,b,c,cost[1<<15];
void read(),solve();
int main()
{
    read();
    solve();
  return 0;
}
void read()
{
    freopen("sate.in","r",stdin);
    freopen("sate.out","w",stdout);
    scanf("%d%d%d%d",&n,&m,&x,&y);
    for(;m;m--)
       scanf("%d%d%d",&a,&b,&c),V[a].push_back(make_pair(b,c)),V[b].push_back(make_pair(a,-c));
}
void solve()
{
    vector<pair<int,int> >::iterator it;
    int q;
   Q.push(x);cost[x]=1;
    while(Q.size())
    {
        q = Q.front();
        for(it=V[q].begin();it!=V[q].end();it++)
      {
           if(!cost[it->first])
           {
                cost[it->first]=cost[q]+it->second;      
              if(it->first == y) { printf("%d\n",cost[y]-1); return; }            
              Q.push(it->first);
           }                  
       }
      Q.pop();
   }
}