Cod sursa(job #1700734)

Utilizator FlorinHajaFlorin Gabriel Haja FlorinHaja Data 11 mai 2016 07:28:07
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>
#include <vector>

using namespace std;

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

const int mod = 45001;
int n, m, i, j, X, Y, x, y, c;
vector <int> ls[30005], lc[30005];
int d[30005], st, dr, coada[mod];
bool viz[30005];

int main()
{
    f >> n >> m >> X >> Y;
    for (i = 1; i <= m; i++)
    {
        f >> x >> y >> c;
        ls[x].push_back(y);
        lc[x].push_back(c);
        ls[y].push_back(x);
        lc[y].push_back(c);
    }
    coada[0] = X;
    while (st <= dr)
    {
        x = coada[st%mod];
        st++;
        for (i = 0; i < ls[x].size(); i++)
        {
            y = ls[x][i];
            if (viz[y] == 0)
            {
                viz[y] = 1;
                if (y > x)
                    d[y] = d[x] + lc[x][i];
                else
                    d[y] = d[x] - lc[x][i];
                if (y == Y)
                {
                    g << d[y];
                    return 0;
                }
                dr++;
                coada[dr%mod] = y;
            }
        }

    }
    return 0;
}