#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int NMAX = 1e5;
const int BSIZE = 316;
int n, m, q;
int v[NMAX + 1];
int dp[NMAX + 1];
vector<int> g[NMAX + 1], gt[NMAX + 1];
int solve_heavy(int t, int k) {
fill(dp + 1, dp + t + 1, 0);
for(int i = 1; i <= k; i++) {
dp[v[i]] = -1;
}
for(int i = 1; i <= t; i++) {
for(int j : gt[i]) {
if(dp[j] != -1) {
dp[i] = max(dp[i], dp[j] + 1);
}
}
}
return dp[t];
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> m >> q;
for(int i = 1; i <= m; i++) {
int a, b;
cin >> a >> b;
g[a].push_back(b);
gt[b].push_back(a);
}
while(q--) {
int t, k;
cin >> t >> k;
for(int i = 1; i <= k; i++) {
cin >> v[i];
}
cout << solve_heavy(t, k) << '\n';
// if(k > BSIZE) {
// cout << solve_heavy() << '\n';
// }
// else {
// cout << solve_light() << '\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... |