# coding:UTF-8 import sys from heapq import heappush, heappop MOD = 10 ** 9 + 7 INF = float('inf') N, M, S, T = list(map(int, input().split())) # スペース区切り連続数字 P = list(map(int, input().split())) # スペース区切り連続数字 AB = [list(map(int, input().split())) for _ in range(M)] # スペース区切り連続数字(行列) dist = [[] for _ in range(N)] # dist[n]: ノード n に隣接する(ノード, 重み)をリストで持つ for a, b in AB: dist[a-1].append(b-1) dist[b-1].append(a-1) # 双方向の場合追加する Y = 0 X = P[S-1] hq = [(-P[S-1], S-1)] # (distance, node) seen = [False] * N # ノードが確定済みかどうか seen[S-1] = True while hq: d, v = heappop(hq) # ノードを pop する d = -d if d < X: X = d Y += 1 for to in dist[v]: # ノード v に隣接しているノードに対して if seen[to] == False: heappush(hq, (-P[to], to)) seen[to] = True print("{}".format(Y))