Pagini recente » Cod sursa (job #2092839) | Cod sursa (job #2206792) | Cod sursa (job #1552658) | Cod sursa (job #996575) | Cod sursa (job #1711581)
#include <iostream>
#include <fstream>
using namespace std;
struct element{
int info;
int nrKilometri;
element *next;
};
element *noduri[30025];
long v[30025];
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;
}
int main(){
ifstream fin("sate.in");
ofstream fout("sate.out");
int n, m, x, y;
int a, b, D;
fin >> n >> m >> x >> y;
for(int i = 1; i <= m; i ++){
fin >> a >> b >> D;
adauga(a, b, D);
adauga(b, a, D);
}
element *stg, *dr;
stg = new element;
stg -> info = x;
stg -> nrKilometri = 0;
v[x] = 1;
stg -> next = NULL;
dr = stg;
int sem = 0;
while(stg && !sem){
int aux = stg -> info;
for(element *p = noduri[aux]; p; p = p -> next){
if(v[p -> info] == 0){
element *T = new element;
T -> info = p -> info;
T -> next = NULL;
if(aux < p -> info){
v[p -> info] = v[aux] + p -> nrKilometri;
}
else{
v[p -> info] = v[aux] - p -> nrKilometri;
}
if(p -> info == y){
sem = 1;
}
dr -> next = T;
dr = T;
}
element *U = new element;
U = stg;
stg = stg -> next;
delete U;
}
}
fout << v[y] - 1;
return 0;
}