Submission #1217150

#TimeUsernameProblemLanguageResultExecution timeMemory
1217150MuhammetBitaro’s Party (JOI18_bitaro)C++20
14 / 100
2094 ms16964 KiB
#include "bits/stdc++.h"

using namespace std;

#define ll long long
#define SZ(s) (int)s.size()
#define ff first
#define ss second

const int N = (2e5 + 5);
const ll M = 1e9 + 7;

vector <int> v[N];

int a[N], vis[N];

bool f(int x) {
    if(~a[x]) return vis[x];
    int mx = -1;
    bool tr = 0;
    for(auto i : v[x]) {
        if(f(i)) {
            vis[x] = true;
            mx = max(mx, a[i]);
        }
    }
    a[x] = mx + 1;
    return vis[x];
}

int main(){
    ios_base::sync_with_stdio(false); cin.tie(nullptr);

    int n, m, q;
    cin >> n >> m >> q;

    for(int i = 1; i <= m; i++) {
        int u1, u2;
        cin >> u1 >> u2;
        v[u1].push_back(u2);
    }

    while(q--) {
        int t, y;
        cin >> t >> y;
        vector <int> vis1(n+1, 0);
        for(int i = 1; i <= n; i++) {
            vis[i] = 0;
            a[i] = -1;
        }
        vis[t] = 1;
        a[t] = 0;
        for(int i = 1; i <= n; i++) {
            f(i);
        }
        int ans = -1;
        for(int i = 0; i < y; i++) {
            int x;
            cin >> x;
            vis1[x] = true;
        }
        for(int i = 1; i <= n; i++) {
            if(!vis1[i] and vis[i]) ans = max(ans, a[i]);
        }
        cout << ans << "\n";
    }

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...