#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define EGRY \
ios_base::sync_with_stdio(false); \
cin.tie(NULL);
const int MAX = 2 * 1e5 + 1000;
const int MOD = 1e9 + 7;
const ll OO = LLONG_MAX;
const double EPS = (double)1e-9;
struct Edge {
int to;
ll weight;
};
struct Taxi {
ll maxDistance, cost;
};
int n, m, start, destination;
vector<vector<Edge>> graph;
vector<Taxi> taxis;
vector<ll> dijkstra(int src) {
vector<ll> dist(n + 1, OO);
priority_queue<pair<ll, int>, vector<pair<ll, int>>, greater<>> pq;
dist[src] = 0;
pq.push({0, src});
while (!pq.empty()) {
auto [currDist, u] = pq.top();
pq.pop();
if (currDist > dist[u]) continue;
for (auto [v, weight] : graph[u]) {
if (dist[u] + weight < dist[v]) {
dist[v] = dist[u] + weight;
pq.push({dist[v], v});
}
}
}
return dist;
}
void solve() {
cin >> n >> m;
cin >> start >> destination;
graph.resize(n + 1);
taxis.resize(n + 1);
for (int i = 0; i < m; i++) {
int u, v;
ll w;
cin >> u >> v >> w;
graph[u].push_back({v, w});
graph[v].push_back({u, w});
}
for (int i = 1; i <= n; i++) {
cin >> taxis[i].maxDistance >> taxis[i].cost;
}
vector<vector<ll>> shortestPaths(n + 1, vector<ll>(n + 1, OO));
for (int i = 1; i <= n; i++) {
shortestPaths[i] = dijkstra(i);
}
vector<vector<Edge>> taxiGraph(n + 1);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (i != j && shortestPaths[i][j] <= taxis[i].maxDistance) {
taxiGraph[i].push_back({j, taxis[i].cost});
}
}
}
vector<ll> minCost(n + 1, OO);
priority_queue<pair<ll, int>, vector<pair<ll, int>>, greater<>> pq;
minCost[start] = 0;
pq.push({0, start});
while (!pq.empty()) {
auto [currCost, u] = pq.top();
pq.pop();
if (currCost > minCost[u]) continue;
for (auto [v, cost] : taxiGraph[u]) {
if (minCost[u] + cost < minCost[v]) {
minCost[v] = minCost[u] + cost;
pq.push({minCost[v], v});
}
}
}
cout << (minCost[destination] == OO ? -1 : minCost[destination]) << endl;
}
int main() {
EGRY
ll t = 1;
// cin >> t;
while (t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBsbCBsb25nIGxvbmcKCiNkZWZpbmUgRUdSWSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IFwKICAgIGNpbi50aWUoTlVMTCk7Cgpjb25zdCBpbnQgTUFYID0gMiAqIDFlNSArIDEwMDA7CmNvbnN0IGludCBNT0QgPSAxZTkgKyA3Owpjb25zdCBsbCBPTyA9IExMT05HX01BWDsKCmNvbnN0IGRvdWJsZSBFUFMgPSAoZG91YmxlKTFlLTk7CgpzdHJ1Y3QgRWRnZSB7CiAgICBpbnQgdG87CiAgICBsbCB3ZWlnaHQ7Cn07CgpzdHJ1Y3QgVGF4aSB7CiAgICBsbCBtYXhEaXN0YW5jZSwgY29zdDsKfTsKCmludCBuLCBtLCBzdGFydCwgZGVzdGluYXRpb247CnZlY3Rvcjx2ZWN0b3I8RWRnZT4+IGdyYXBoOwp2ZWN0b3I8VGF4aT4gdGF4aXM7Cgp2ZWN0b3I8bGw+IGRpamtzdHJhKGludCBzcmMpIHsKICAgIHZlY3RvcjxsbD4gZGlzdChuICsgMSwgT08pOwogICAgcHJpb3JpdHlfcXVldWU8cGFpcjxsbCwgaW50PiwgdmVjdG9yPHBhaXI8bGwsIGludD4+LCBncmVhdGVyPD4+IHBxOwoKICAgIGRpc3Rbc3JjXSA9IDA7CiAgICBwcS5wdXNoKHswLCBzcmN9KTsKCiAgICB3aGlsZSAoIXBxLmVtcHR5KCkpIHsKICAgICAgICBhdXRvIFtjdXJyRGlzdCwgdV0gPSBwcS50b3AoKTsKICAgICAgICBwcS5wb3AoKTsKCiAgICAgICAgaWYgKGN1cnJEaXN0ID4gZGlzdFt1XSkgY29udGludWU7CgogICAgICAgIGZvciAoYXV0byBbdiwgd2VpZ2h0XSA6IGdyYXBoW3VdKSB7CiAgICAgICAgICAgIGlmIChkaXN0W3VdICsgd2VpZ2h0IDwgZGlzdFt2XSkgewogICAgICAgICAgICAgICAgZGlzdFt2XSA9IGRpc3RbdV0gKyB3ZWlnaHQ7CiAgICAgICAgICAgICAgICBwcS5wdXNoKHtkaXN0W3ZdLCB2fSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGRpc3Q7Cn0KCnZvaWQgc29sdmUoKSB7CiAgICBjaW4gPj4gbiA+PiBtOwogICAgY2luID4+IHN0YXJ0ID4+IGRlc3RpbmF0aW9uOwoKICAgIGdyYXBoLnJlc2l6ZShuICsgMSk7CiAgICB0YXhpcy5yZXNpemUobiArIDEpOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbTsgaSsrKSB7CiAgICAgICAgaW50IHUsIHY7CiAgICAgICAgbGwgdzsKICAgICAgICBjaW4gPj4gdSA+PiB2ID4+IHc7CiAgICAgICAgZ3JhcGhbdV0ucHVzaF9iYWNrKHt2LCB3fSk7CiAgICAgICAgZ3JhcGhbdl0ucHVzaF9iYWNrKHt1LCB3fSk7CiAgICB9CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgY2luID4+IHRheGlzW2ldLm1heERpc3RhbmNlID4+IHRheGlzW2ldLmNvc3Q7CiAgICB9CgogICAgdmVjdG9yPHZlY3RvcjxsbD4+IHNob3J0ZXN0UGF0aHMobiArIDEsIHZlY3RvcjxsbD4obiArIDEsIE9PKSk7CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgc2hvcnRlc3RQYXRoc1tpXSA9IGRpamtzdHJhKGkpOwogICAgfQoKICAgIHZlY3Rvcjx2ZWN0b3I8RWRnZT4+IHRheGlHcmFwaChuICsgMSk7CiAgICAKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAxOyBqIDw9IG47IGorKykgewogICAgICAgICAgICBpZiAoaSAhPSBqICYmIHNob3J0ZXN0UGF0aHNbaV1bal0gPD0gdGF4aXNbaV0ubWF4RGlzdGFuY2UpIHsKICAgICAgICAgICAgICAgIHRheGlHcmFwaFtpXS5wdXNoX2JhY2soe2osIHRheGlzW2ldLmNvc3R9KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICB2ZWN0b3I8bGw+IG1pbkNvc3QobiArIDEsIE9PKTsKICAgIHByaW9yaXR5X3F1ZXVlPHBhaXI8bGwsIGludD4sIHZlY3RvcjxwYWlyPGxsLCBpbnQ+PiwgZ3JlYXRlcjw+PiBwcTsKICAgIAogICAgbWluQ29zdFtzdGFydF0gPSAwOwogICAgcHEucHVzaCh7MCwgc3RhcnR9KTsKCiAgICB3aGlsZSAoIXBxLmVtcHR5KCkpIHsKICAgICAgICBhdXRvIFtjdXJyQ29zdCwgdV0gPSBwcS50b3AoKTsKICAgICAgICBwcS5wb3AoKTsKCiAgICAgICAgaWYgKGN1cnJDb3N0ID4gbWluQ29zdFt1XSkgY29udGludWU7CgogICAgICAgIGZvciAoYXV0byBbdiwgY29zdF0gOiB0YXhpR3JhcGhbdV0pIHsKICAgICAgICAgICAgaWYgKG1pbkNvc3RbdV0gKyBjb3N0IDwgbWluQ29zdFt2XSkgewogICAgICAgICAgICAgICAgbWluQ29zdFt2XSA9IG1pbkNvc3RbdV0gKyBjb3N0OwogICAgICAgICAgICAgICAgcHEucHVzaCh7bWluQ29zdFt2XSwgdn0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGNvdXQgPDwgKG1pbkNvc3RbZGVzdGluYXRpb25dID09IE9PID8gLTEgOiBtaW5Db3N0W2Rlc3RpbmF0aW9uXSkgPDwgZW5kbDsKfQoKaW50IG1haW4oKSB7CiAgICBFR1JZCiAgICBsbCB0ID0gMTsKICAgIC8vIGNpbiA+PiB0OwoKICAgIHdoaWxlICh0LS0pIHsKICAgICAgICBzb2x2ZSgpOwogICAgfQoKICAgIHJldHVybiAwOwp9Cg==