#include <bits/stdc++.h>
 
using namespace std;
 
vector<int> a;
vector<int> b;
vector<vector<int>> adj(150005);
 
void solve (){
    int n, m;
    cin >> n >> m;
    a.resize(n+1); b.resize(n+1);
    int b_min = INT_MAX;
    unordered_set<int> aelem, belem;
    for (int i = 1; i <= n; i++){
        cin >> a[i];
        aelem.insert(a[i]);
    }
    for (int i = 1; i <= n; i++){
        cin >> b[i];
        b_min = min(b_min, b[i]);
        belem.insert(b[i]);
    } 
    for(int i = 1; i <= n; i++){
        if (a[i] < b[i]){
            cout << 0 << '\n';
            return;
        }
    }
    for(int i : belem){
        if (!aelem.count(i)){
            cout << 0 << '\n';
            return;
        }
    }
    for (int i = 0; i < m; i++){
        int x, y;
        cin >> x >> y;
        adj[x].push_back(y);
        adj[y].push_back(x);
    }
    int thatnode = 0;
    for (int i = 1; i <= n; i++){
        if (adj[i].size() > adj[thatnode].size()){
            thatnode = i;
        }
    }
    if(b[thatnode] == b_min){
        cout << 1 << '\n';
    }
    else cout << 0 << '\n';
}
 
int main(){
    int t;
    cin >> t;
    while (t--) solve();
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |