Pagini recente » Cod sursa (job #2865801) | Cod sursa (job #536358) | Cod sursa (job #1332393) | Cod sursa (job #2739755) | Cod sursa (job #595206)
Cod sursa(job #595206)
# include <cstdio>
# include <vector>
# include <queue>
using namespace std;
# define x first
# define y second
typedef vector < pair <int , int> > VC ;
const char *FIN = "sate.in", *FOU = "sate.out";
const int MAX = 30005;
int N, M, X, Y, A[MAX];
VC G[MAX];
queue <int> Q;
int main (void) {
freopen (FIN, "r", stdin) ;
scanf ("%d %d %d %d", &N, &M, &X, &Y);
for (int i, j, D; M ; --M) {
scanf ("%d %d %d", &i, &j, &D) ;
G[i].push_back (make_pair (j, +D));
G[j].push_back (make_pair (i, -D));
}
A[X] = 1;
for (Q.push (X); !Q.empty (); Q.pop ()) {
int Z = Q.front ();
for (VC :: iterator it = G[Z].begin (); it != G[Z].end (); ++it) {
if (A[it -> x] == 0) {
A[it -> x] = A[Z] + it -> y;
if (it -> x == Y) {
fprintf (fopen (FOU, "w"), "%d", --A[Y]);
return 0;
}
Q.push (it -> x);
}
}
}
}