Cod sursa(job #1228886)

Utilizator george_stelianChichirim George george_stelian Data 15 septembrie 2014 18:57:12
Problema Sate Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <cstdio>
#include <vector>

using namespace std;

vector<pair<int,int> >v[30010];
vector<pair<int,int> >::iterator it;
int sol[30010],coada[30010],n,m,a,b,x,y,c,i,nod,nr;
char vaz[30010];

int main()
{
    freopen("sate.in", "r", stdin);
    freopen("sate.out", "w", stdout);
    scanf("%d%d%d%d",&n,&m,&a,&b);
    for(i=1;i<=n;i++)
    {
        scanf("%d%d%d",&x,&y,&c);
        v[x].push_back(make_pair(y,c));
        v[y].push_back(make_pair(x,-c));
    }
    coada[++nr]=a;
    vaz[a]=1;
    for(i=1;i<=nr;i++)
    {
        nod=coada[i];
        if(nod==b)
        {
            printf("%d",sol[b]);
            break;
        }
        for(it=v[nod].begin();it!=v[nod].end();it++)
            if(!vaz[it->first])
            {
                vaz[it->first]=1;
                sol[it->first]=sol[nod]+it->second;
                coada[++nr]=it->first;
            }
    }
    return 0;
}