// UUID: 4514665d-f6b9-4131-b3f7-6ce98cf749e2
#include <bits/stdc++.h>
using namespace std;
bool ans = 1;
vector<vector<pair<int, int> > > t;
vector<vector<int> > va, vb;
vector<int> p, s;
vector<bool> go;
void upd(int v, int l, int r, int tl, int tr, pair<int, int> val)
{
if(tl > tr) return;
if(tl == l && tr == r)
{
t[v].push_back(val);
return;
}
int m = (l + r) / 2;
upd(v * 2, l, m, tl, min(tr, m), val);
upd(v * 2 + 1, m + 1, r, max(tl, m + 1), tr, val);
}
vector<int> op;
void rollback()
{
int x = op.back();
op.pop_back();
p[x] = 0;
}
int get(int v)
{
return p[v] == 0 ? v : p[v] = get(p[v]);
}
void unio(int a, int b)
{
a = get(a);
b = get(b);
if(a != b)
{
if(s[a] < s[b]) swap(a, b);
p[b] = a;
s[a] += s[b];
}
op.push_back(b);
}
void dfs(int v, int l, int r)
{
//cout << v << endl;
for(auto [x, y] : t[v])
{
//cout << x << " " << y << endl;
unio(x, y);
}
if(l == r)
{
for(auto x : va[l])
{
go[get(x)] = 1;
}
for(auto x : vb[l])
{
if(!go[get(x)]) ans = 0;
}
for(auto x : va[l])
{
go[get(x)] = 0;
}
return;
}
int m = (l + r) / 2;
dfs(v * 2, l, m);
dfs(v * 2 + 1, m + 1, r);
for(auto x : t[v])
{
rollback();
}
}
void solve()
{
ans = 1;
int n, m;
cin >> n >> m;
t.assign(4 * n, {});
va.assign(n + 1, {});
vb.assign(n + 1, {});
p.assign(n + 1, 0);
s.assign(n + 1, 1);
go.assign(n + 1, 0);
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];
for(int i = 1; i <= n; i++)
{
va[a[i]].push_back(i);
vb[b[i]].push_back(i);
}
for(int i = 0; i < m; i++)
{
int x, y;
cin >> x >> y;
upd(1, 1, n, max(b[x], b[y]), min(a[x], a[y]), {x, y});
}
dfs(1, 1, n);
cout << ans << "\n";
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int te;
cin >> te;
while(te--) 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... |