Pagini recente » Cod sursa (job #2649869) | Cod sursa (job #499786) | Cod sursa (job #675660) | Cod sursa (job #603281)
Cod sursa(job #603281)
#include <cstdio>
#include <vector>
using namespace std;
#define MAXN 30005
#define MAXM 100030
int main(){
freopen("sate.in", "r", stdin);
freopen("sate.out", "w", stdout);
int N, M, X, Y, i, r, f, n, c;
static int D[2*MAXM], B[2*MAXM], Q[MAXN], use[MAXN], C[MAXN];
vector<int> G[MAXN];
vector<int>::iterator ii;
scanf("%d%d%d%d", &N, &M, &X, &Y);
for(i=1; i<=M; i++){
scanf("%d%d%d", B+i+M, B+i, D+i);
D[i+M]=-D[i];
G[B[i+M]].push_back(i);
G[B[i]].push_back(i+M);
}
Q[1]=X; r=1; use[X]=1;
for(i=1; i<=r; i++){
n=Q[i]; c=C[i];
if(n == Y){
f=c; break;
}
for(ii=G[n].begin(); ii!=G[n].end(); ii++)
if(!use[B[*ii]]){
use[B[*ii]]=1;
Q[++r]=B[*ii];
C[r]=c+D[*ii];
}
}
printf("%d\n", f);
return 0;
}