Cod sursa(job #1711599)

Utilizator karate3Gabriela Tudor karate3 Data 31 mai 2016 19:16:10
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <iostream>
#include <fstream>

using namespace std;

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

struct element{
    int info;
    int nrKilometri;
    element *next;
};

element *noduri[30025];
long long v[30025];
int coada[30025];

int n, m, x, y;
int a, b, D;

void adauga(int a, int b, int d){
    element *p = new element;
    p -> info = b;
    p -> nrKilometri = d;
    p -> next = noduri[a];
    noduri[a] = p;
}

//parcurg in latime
void parcurg(){
    coada[1] = x;
    v[x] = 0;

    int prim, ultim;
    prim = ultim = 1;

    while(prim <= ultim){
        int aux = coada[prim];
        prim ++;

        for(element *p = noduri[aux]; p; p = p -> next){
            if(v[p -> info] == 0){
                ultim ++;
                coada[ultim] = p -> info;

                if(p -> info >= aux){v[p -> info] = v[aux] + p -> nrKilometri;}
                else{v[p -> info] = v[aux] - p -> nrKilometri;}
            }
        }
    }

    fout << v[y];
}


int main(){
    fin >> n >> m >> x >> y;

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

    return 0;
}