Cod sursa(job #1631692)

Utilizator ancabdBadiu Anca ancabd Data 5 martie 2016 18:14:05
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>

using namespace std;

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

int m, n, x, y, vf[200050], lst[200050], urm[200050], cost[200050], nr, coada[30001], dist[30001];
bool viz[30001];

void adauga (int a, int b, int c)
{
    ++nr;
    vf[nr]=b;
    urm[nr] = lst[a];
    cost[nr] = c;
    lst[a]=nr;
}

int main()
{
    int a, b, c, p=0, u=1;

    fin >> n >> m >> x >> y;

    for (int i=1; i<=m; ++i)
    {
        fin >> a >> b >> c;
        adauga (a, b, c);
        adauga (b, a, c);
    }

    coada[0] = x;
    dist[x] = 0;

    while (p <= u)
    {
        int nod = coada[p];
        int i = lst[nod];
        while (i)
        {
            int j = vf[i];
            if (!viz[j])
            {
                viz[j] = 1;
                if (j > nod) dist[j] = dist[nod] + cost[i];
                else dist[j] = dist[nod] - cost[i];
                coada[++u]=j;
            }
        i = urm[i];
        }
        ++p;
    }
    fout << dist[y];
}