Submission #47757

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

using namespace std;

const int N = 1e5 + 2;

int n, m, q, d[N], used[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);
            }

            set < pair <int, int> > st;
            memset(d, 0, sizeof(d));
            st.insert({d[t], t});

            int ans = -1;

            while(!st.empty()){
                  int v = st.begin()->second;
                  st.erase(st.begin());
                  if(!used[v])
                        ans = max(ans, -d[v]);
                  for(int to : g[v]){
                        if(d[v] - 1 < d[to]){
                              st.erase({d[to], to});
                              d[to] = d[v] - 1;
                              st.insert({d[to], 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...