Cod sursa(job #606735)

Utilizator valentin.harsanValentin Harsan valentin.harsan Data 9 august 2011 15:19:48
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<iostream>
#include<fstream>
#include<vector>
#define N 30010
using namespace std;

ifstream in("sate.in");
ofstream out("sate.out");

int n,m,xx,y,q[3*N],p=1,u,x[N];
vector< pair<int,int> > g[N];

void bf() {
    int i;

    q[++u]=xx;

    while(p<=u) {

        for(i=0;i!=g[q[p]].size();++i)

            if(x[g[q[p]][i].first]==-1) {

                x[g[q[p]][i].first] = x[q[p]] + g[q[p]][i].second;

                if(g[q[p]][i].first==y)
                    return;

                q[++u] = g[q[p]][i].first;

            }

            ++p;

    }

}

int main() {
    int i,a,b,c;

    in >> n >> m >> xx >> y;

    for(i=1;i<=m;++i) {

        in >> a >> b >> c;

        g[a].push_back(make_pair<int,int>(b,c));
        g[b].push_back(make_pair<int,int>(a,-c));

    }

    for(i=1;i<=n;++i)
        x[i]=-1;

    x[xx]=0;

    bf();

    out << x[y];

    return 0;
}