Cod sursa(job #1033306)

Utilizator geniucosOncescu Costin geniucos Data 16 noiembrie 2013 18:46:24
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<queue>
#include<cstdio>
#include<vector>
using namespace std;
int po,fin,i,j,c,x,y,n,m,d[30009];
char sir[109];
vector < pair < int , int > > v[30009];
void df(int x)
{
    if(x==y) fin=1;
    if(fin) return ;
    vector < pair < int , int > > :: iterator it;
    for(it=v[x].begin();it!=v[x].end();it++)
        if(d[it->first]==-1)
        {
            d[it->first]=d[x]+it->second;
            df(it->first);
        }
}
void cit(int &x)
{
    x=0;
    while(sir[po]>='0'&&sir[po]<='9')
    {
        x=x*10+sir[po]-48;
        po++;
    }
    po++;
}
int main()
{
freopen("sate.in","r",stdin);
freopen("sate.out","w",stdout);
scanf("%d",&n);
scanf("%d",&m);
scanf("%d",&x);
scanf("%d\n",&y);
while(m)
{
    m--;
    gets(sir+1);po=1;
    cit(i);
    cit(j);
    cit(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;
df(x);
printf("%d\n",d[y]);
return 0;
}