Submission #1074693

#TimeUsernameProblemLanguageResultExecution timeMemory
10746931L1YABitaro’s Party (JOI18_bitaro)C++17
14 / 100
2068 ms9300 KiB
//1L1YA

#include<bits/stdc++.h>
using namespace std;

//#pragma GCC optimize ("O3,unrool-loops")
//#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")

typedef long long       ll;
typedef pair<ll,ll>     pll;
typedef pair<int,int>   pii;

#define Pb              push_back
#define F               first
#define S               second
#define endl            '\n'
#define sep             ' '
#define all(x)          x.begin(),x.end()
#define al(x,n)         x+1,x+n+1
#define SZ(x)           ((int)x.size())
#define lc              (id<<1)
#define rc              (lc|1)
#define mid             (l+r>>1)
#define dokme(x)        cout << x << endl, exit(0)
#define sik(x)          cout << x << endl;continue;
#define FastIO          ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define FileIO          freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

const ll oo=1e18;
const int mod=1e9+7;
const int inf=1e9+111;
const int N=1e5+11;
const int lg=23;

int n,m,q,dp[N];
vector<int> adj[N];
bool mark[N];

void slv(){
	for(int v=1;v<=n;v++){
		dp[v]=-inf;
		if(!mark[v])	dp[v]=0;
		for(int u: adj[v])	dp[v]=max(dp[v],dp[u]+1);
	}
}

int main(){
    FastIO

    cin >> n >> m >> q;
    for(int i=1;i<=m;i++){
        int u,v;
        cin >> u >> v;
        adj[v].Pb(u);
    }
    while(q--){
        int v;
        cin >> v;
        int y;
        cin >> y;
        vector<int> vc;
        for(int i=1;i<=y;i++){
            int x;
            cin >> x;
            vc.Pb(x);
            mark[x]=1;
        }
        slv();
        cout << max(-1,dp[v]) << endl;
        for(int x: vc)  mark[x]=0;
    }

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