제출 #1177490

#제출 시각아이디문제언어결과실행 시간메모리
1177490huypham2009Long Mansion (JOI17_long_mansion)C++20
5 / 100
3095 ms16480 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...