3 solutions

  • 0
    @ 2025-7-25 14:54:54
    #include <bits/stdc++.h>
    using namespace std;
    int n,m,c[200050],p[200050],q,x,ans;
    bool tong[200050];
    void dfs(int t){
        ans++;
        if(tong[c[t]]){
            return ;
        }
        tong[c[t]]=1;
        dfs(p[t]);
    }
    int main(){
        cin>>n>>m;
        for(int i=1;i<=n;i++){
            cin>>c[i];
        }
        for(int i=1;i<=n;i++){
            cin>>p[i];
        }
        cin>>q;
        for(int i=1;i<=q;i++){
            cin>>x;
            for(int j=1;j<=m;j++){
                tong[j]=0;
            }
            ans=0;
            dfs(x);
            cout<<ans<<endl;
        }
        return 0;
    }
    

    Information

    ID
    573
    Time
    2000ms
    Memory
    512MiB
    Difficulty
    10
    Tags
    (None)
    # Submissions
    8
    Accepted
    3
    Uploaded By