Cod sursa(job #1033301)

Utilizator geniucosOncescu Costin geniucos Data 16 noiembrie 2013 18:37:28
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<queue>
#include<cstdio>
#include<vector>
using namespace std;
int i,j,c,x,y,n,m,d[30009];
vector < pair < int , int > > v[30009];
vector < pair < int , int > > :: iterator it;
queue < int > cc;
int main()
{
freopen("sate.in","r",stdin);
freopen("sate.out","w",stdout);
scanf("%d",&n);
scanf("%d",&m);
scanf("%d",&x);
scanf("%d",&y);
while(m)
{
    m--;
    scanf("%d",&i);
    scanf("%d",&j);
    scanf("%d",&c);
    v[i].push_back(make_pair(j,c));
    v[j].push_back(make_pair(i,-c));
}
for(i=1;i<=n;i++)
    d[i]=-1;
d[x]=0;
cc.push(x);
while(!cc.empty())
{
    i=cc.front();cc.pop();
    for(it=v[i].begin();it!=v[i].end();it++)
        if(d[it->first]==-1)
        {
            d[it->first]=d[i]+it->second;
            if(it->first==y)
            {
                printf("%d\n",d[y]);
                return 0;
            }
            cc.push(it->first);
        }
}
}