#include <stdio.h>

struct yama {
  int height;   //この山の高さ
  int highest;  //
};

int main(void) {
  int i, n, m, h;  //展望台の数n,道の数m
  scanf("%d %d", &n, &m);
  struct yama yam[100000];
  for (i = 0; i < n; i++) {
    scanf("%d", &h);
    yam[i].height = h;    //こいつの高さ.高い方に更新
    yam[i].highest = -1;  //他と接続なしで-1(いい展望台確定)
  }
  int a, b, atmp, btmp;
  for (i = 0; i < m; i++) {
    scanf("%d %d", &a, &b);
    a = a - 1;  //補正
    b = b - 1;
    atmp = a;
    btmp = b;
    while (yam[atmp].highest != -1) {
      atmp = yam[atmp].highest;
    }
    while (yam[btmp].highest != -1) {
      btmp = yam[btmp].highest;
    }  // a,bをそれぞれの近くで一番高い山にする
    if (yam[atmp].height > yam[btmp].height) {
      yam[b].highest = atmp;
    } else {
      yam[a].highest = btmp;
    }
  }
  int count = 0;
  for (i = 0; i < n; i++) {
    // printf("height : %d\nhighest : %d\n", yam[i].height, yam[i].highest);
    if (yam[i].highest == -1) {
      count++;
    }
  }
  printf("%d\n", count);
  return 0;
}