#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |