Pagini recente » Cod sursa (job #2569731) | Cod sursa (job #695579) | Cod sursa (job #2218688) | Cod sursa (job #1029349) | Cod sursa (job #1711599)
#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;
}