#include<bits/stdc++.h>
using namespace std;
const long long M=3e5+10,MOD=1000000007;
typedef long long ll;
int vis[M];
vector<int>edge[M];
vector<int>vec;
void dfs(int x){
vis[x]=1;
vec.push_back(x);
for(int i:edge[x]){
if(!vis[i]){
dfs(i);
}
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int t=1;
cin>>t;
while(t--){
int n,q;
cin>>n>>q;
vector<int>a(n+1);
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=q;i++){
int x,y;
cin>>x>>y;
edge[x].push_back(y);
edge[y].push_back(x);
}
int ans=0;
for(int i=1;i<=n;i++){
if(!vis[i]){
dfs(i);
set<int>st;
for(int ii:vec)st.insert(a[ii]);
for(int ii:vec){
if(st.find(ii)!=st.end())ans++;
}
vec.clear();
}
}
for(int i=0;i<=n;i++){
edge[i].clear();
vis[i]=0;
}
cout<<ans<<"\n";
}
return 0;
}