#include <bits/stdc++.h>
using namespace std;
const int maxn=5e5+5;
int n,m,q,c[maxn];
vector<int>keys[maxn];
bool xtoy(int x,int y)
{
set<int>s;
for(auto v:keys[x])s.insert(v);
int i=x,j=x;
while(i!=y&&j!=y)
{
if(s.find(c[j])!=s.end())
{
j++;
for(auto v:keys[j])s.insert(v);
continue;
}
if(s.find(c[i-1])!=s.end())
{
i--;
for(auto v:keys[i])s.insert(v);
continue;
}
return 0;
}
return 1;
}
int32_t main()
{
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin>>n;
for(int i=1;i<n;i++)cin>>c[i];
for(int i=1;i<=n;i++)
{
int k;
cin>>k;
for(int j=1;j<=k;j++)
{
int tmp;
cin>>tmp;
keys[i].push_back(tmp);
}
}
cin>>q;
while(q--)
{
int x,y;
cin>>x>>y;
if(xtoy(x,y))cout<<"YES\n";
else cout<<"NO\n";
}
return 0;
}
# | 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... |