#include #include #include #include using namespace std; using ll = long long; using P = pair; int main(void){ ll n, m, p, y; cin >> n >> m >> p >> y; vector> to(n); for(int i=0; i> u >> v >> w; u--, v--; to[u].emplace_back(v, w); swap(u, v); to[u].emplace_back(v, w); } vector d(p), e(p); for(int i=0; i> d[i] >> e[i]; priority_queue, greater

> pri; pri.emplace(0, 0); vector dist(n, 1e18); dist[0]=0; while(pri.size()){ auto [d, id]=pri.top(); pri.pop(); if(dist[id]!=d) continue; for(auto [v, w]:to[id]){ ll nd=d+w; if(dist[v]>nd){ dist[v]=nd; pri.emplace(nd, v); } } } ll ans=0; for(int i=0; i