Cod sursa(job #606860)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 10 august 2011 12:51:20
Problema Sate Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
# include <fstream>
# include <vector>
# include <queue>
using namespace std;

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

vector <int> A[30100], B[30100];
int n, m, X, Y, x, y, cost, dmin[30100];
queue <int> Q;

void BFs (int X)
{
    Q.push (X);
    for (int i = 1; i <= n; ++i) dmin[i] = -1;
    dmin[X] = 0;
    for (; !Q.empty (); Q.pop ())
    {
        int ret = Q.front (), siz = A[ret].size ();
        for (int i = 0; i < siz; ++i)
        {
            if (dmin[A[ret][i]] < 0)
            {
                dmin[A[ret][i]] = dmin[ret] + B[ret][i];
                Q.push (A[ret][i]);
            }
            if (A[ret][i] == Y)
            {
                g << dmin[A[ret][i]] << '\n';
                return ;
            }
        }
    }
}
int main ()
{
    f >> n >> m >> X >> Y;
    for (int i = 1; i <= m; ++i)
    {
        f >> x >> y >> cost;
        A[x].push_back (y);
        B[x].push_back (cost);
        A[y].push_back (x);
        B[y].push_back (cost * (-1));
    }
    BFs (X);
}