Submission #889631

#TimeUsernameProblemLanguageResultExecution timeMemory
889631vjudge1Tourism (JOI23_tourism)C++17
5 / 100
5074 ms7760 KiB
#include <bits/stdc++.h>
#define int long long
#define all(x) x.begin(),x.end()
#define ff first
#define ss second
#define pb push_back
using namespace std;
signed main(){
    ios_base::sync_with_stdio();
    cin.tie(0);
    int n,m,qq;
    cin>>n>>m>>qq;
    vector <int> g[n+1];
    for(int i=0;i<n-1;i++){
        int u,v;
        cin>>u>>v;
        g[u].pb(v);
        g[v].pb(u);
    }
    vector <int> c(m+1);
    for(int i=1;i<=m;i++){
        cin>>c[i];
    }
    queue <int> q;
    while(qq--){
        int l,r;
        cin>>l>>r;
        set <int> st;
        if(l==r)st.insert(l);
        for(int i=l;i<r;i++){
            vector <int> d(n+1,-1);
            vector <int> p(n+1);
            q.push(c[i]);
            d[c[i]]=1;
            while(!q.empty()){
                int v=q.front();
                q.pop();
                for(auto to : g[v]){
                    if(d[to]==-1){
                        d[to]=1;
                        p[to]=v;
                        q.push(to);
                    }
                }
            }
            int x=c[i+1];
            st.insert(x);st.insert(c[i]);
            while(x!=c[i]){
                x=p[x];
                st.insert(x);
            }
        }
        cout<<st.size()<<"\n";
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...