#include using namespace std; #ifdef LOCAL #include "debug.h" #else #define debug(...) 42 #endif int main() { ios::sync_with_stdio(0); cin.tie(0); int n, m, s, t; cin >> n >> m >> s >> t; s--; t--; vector p(n); for (int i = 0; i < n; i++) cin >> p[i]; vector> g(n); for (int i = 0; i < m; i++) { int a, b; cin >> a >> b; a--; b--; g[a].push_back(b); g[b].push_back(a); } priority_queue> q; q.push({p[s], s}); int minv = p[s]; int ans = 0; vector done(n); while (!q.empty()) { auto [val, u] = q.top(); q.pop(); if (done[u]) continue; done[u] = true; if (val < minv) { minv = val; ans++; } for (int v : g[u]) { q.push({p[v], v}); } } cout << ans << '\n'; }