Submission #532302

#TimeUsernameProblemLanguageResultExecution timeMemory
532302MohamedFaresNebiliBitaro’s Party (JOI18_bitaro)C++14
0 / 100
4 ms5068 KiB
#include <bits/stdc++.h>

        using namespace std;

        using ll = long long;
        using ii = pair<ll, ll>;
        using vi = vector<int>;
        using db = double;

        #define ff first
        #define ss second
        #define pb push_back
        #define all(x) x.begin(), x.end()
        #define lb lower_bound
        #define ub upper_bound

        int n, m, q, batch = 555;
        vector<int> adj[100005], rev[100005], top;

        int32_t main() {
            ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
            cin >> n >> m >> q;
            for(int l = 0; l < m; l++) {
                int u, v; cin >> u >> v;
                adj[u].pb(v); rev[v].pb(u);
            }
            while(q--) {
                int a, k; cin >> a >> k; int res = -1;
                vector<bool> vis(n + 1, 0), vis0(n + 1, 0);
                vector<int> dis(n + 1, -1); dis[a] = 0;
                for(int l = 0; l < k; l++) {
                    int u; cin >> u; vis0[u] = 1;
                }
                if(a <= batch) {
                    queue<int> q; q.push(a);
                    while(!q.empty()) {
                        a = q.front(); vis[a] = 1; q.pop();
                        if(vis0[a] == 0) res = max(res, dis[a]);
                        for(auto u : rev[a]) {
                            if(dis[a] + 1 > dis[u])
                            dis[u] = dis[a] + 1, q.push(u);
                        }
                    }
                }
                else {

                }
                cout << res << "\n";
            }
        }





#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...