Submission #47754

#TimeUsernameProblemLanguageResultExecution timeMemory
47754mirbek01Bitaro’s Party (JOI18_bitaro)C++17
0 / 100
7 ms3672 KiB
# include <bits/stdc++.h>

using namespace std;

const int N = 1e5 + 2;

int n, m, q, d[N], used[N], vis[N];
vector <int> g[N];

int main(){
      cin >> n >> m >> q;

      for(int i = 0; i < m; i ++){
            int u, v;
            cin >> u >> v;
            g[v].push_back(u);
      }

      while(q --){
            int t, y;
            cin >> t >> y;
            vector <int> v;
            for(int i = 1; i <= y; i ++){
                  int x;
                  cin >> x;
                  used[x] = 1;
                  v.push_back(x);
            }

            queue <int> q;
            q.push(t);
            memset(d, 0, sizeof(d));
            memset(vis, 0, sizeof(vis));

            int ans = -1;
            vis[t] = 1;
            if(!used[t])
                  ans = d[t];
            while(!q.empty()){
                  int v = q.front();
                  q.pop();
                  for(int to : g[v]){
                        if(!vis[to])
                              q.push(to);
                        d[to] = max(d[v] + 1, d[to]);
                        vis[to] = 1;
                        if(!used[to])
                              ans = max(ans, d[to]);
                  }
            }

            cout << ans << endl;

            for(int i : v)
                  used[i] = 0;
      }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...