#include using namespace std; #define REP(i,n) for(int i=0; i<(int)(n); i++) int main() { ios_base::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 > edges(n); for (int i = 0; i < m; i++) { int a, b; cin >> a >> b; --a, --b; edges[a].emplace_back(b); edges[b].emplace_back(a); } int cur = p[s]; int ret = 0; set x; set > y; y.emplace(p[s], s); while (y.size()) { auto itr = y.end(); int v = (--itr)->second; x.insert(v); y.erase(itr); if (cur > p[v]) { cur = p[v]; ++ret; } for (int w: edges[v]) { if (!x.count(w)) y.emplace(p[w], w); } } cout << ret << endl; return 0; }