// UUID: 027efd6f-0eff-4bd0-9062-819b530001d1
#include <bits/stdc++.h>
using namespace std;
int n,m;
const int c=150005;
int fonok[c],mer[c];
int holvan(int x)
{
return (fonok[x]==x?x:fonok[x]=holvan(fonok[x]));
}
void unio(int a, int b)
{
a=holvan(a),b=holvan(b);
if(a==b) return;
if(mer[a]>mer[b]) swap(a,b);
mer[b]+=mer[a];
fonok[a]=b;
}
void solve()
{
cin>>n>>m;
vector<int> a(n+1),b(n+1);
for(int i=1; i<=n; i++)
cin>>a[i];
for(int i=1; i<=n; i++)
cin>>b[i];
vector<array<int, 2>> elek(m);
for(auto &[a,b]:elek) cin>>a>>b;
vector<vector<int>> pos1(n+1),pos2(n+1);
for(int i=1; i<=n; i++)
{
pos1[a[i]].push_back(i);
}
for(int i=1; i<=n; i++)
{
pos2[b[i]].push_back(i);
}
for(int i=n; i>0; i--)
{
if(pos1[i].empty() && !pos2[i].empty())
{
cout<<"0\n"<<i;
return;
}
if(pos1[i].empty() && pos2[i].empty()) continue;
for(int i=1; i<=n; i++)
fonok[i]=i,mer[i]=1;
for(auto &[x,y]:elek)
{
if(a[x]>=i && a[y]>=i && b[x]<=i && b[y]<=i) unio(x,y);
}
vector<bool> van(n+1);
for(int &x:pos1[i])
van[holvan(x)]=1;
for(int &x:pos2[i])
if(!van[holvan(x)])
{
cout<<"0\n";
return;
}
}
cout<<"1\n";
}
int main() {
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int tc=1; cin>>tc;
while(tc--) 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... |