Pagini recente » Cod sursa (job #2938404) | Cod sursa (job #2132542) | Cod sursa (job #1363431) | Cod sursa (job #2292922) | Cod sursa (job #1023923)
#include <stdio.h>
#include <string.h>
#include <vector>
#include <queue>
#define NMAX 30005
using namespace std;
int N, M, X, Y;
int i, j, nr, curent, curent2, cost[NMAX], s;
bool vizitat[NMAX];
//N varfuri si M arce
struct sat{
int vf, D;
} a, b;
vector <sat> vf[NMAX];
queue <int> coada;
void bfs(){
vizitat[X] = 1;
coada.push(X);
while(!coada.empty()){
curent = coada.front();
coada.pop();
for(j = 0; j < vf[curent].size(); j++){
a = vf[curent][j];
if(!vizitat[a.vf]){
vizitat[a.vf] = 1;
coada.push(a.vf);
cost[a.vf] = cost[curent] + a.D;
if(a.vf == Y){
return;
}
}
}
}
}
int main(){
freopen("sate.in", "r", stdin);
freopen("sate.out", "w", stdout);
scanf("%d%d%d%d", &N, &M, &X, &Y);
int x, y, d;
for(i = 1; i <= M; i++){
scanf("%d%d%d", &x, &y, &d);
a.vf = y;
a.D = d;
vf[x].push_back(a);//(sat){y,d}
vf[y].push_back((sat){x, -d});
}
bfs();
printf("%d", cost[Y]);
}