제출 #521152

#제출 시각아이디문제언어결과실행 시간메모리
521152CyberSleeperBitaro’s Party (JOI18_bitaro)C++17
0 / 100
2087 ms5324 KiB
#include <bits/stdc++.h>
#define fastio      ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
#define debug(x)    cout << "Line " << __LINE__ << ", " << #x << " is " << x << endl
#define all(x)      x.begin(), x.end()
#define fi          first
#define se          second
#define mp          make_pair
#define pb          push_back
#define ll          long long
#define vll         vector<ll>
#define ull         unsigned long long
#define pll         pair<ll, ll>
#define pii         pair<int, int>
#define ld          long double
#define nl          '\n'
#define tb          '\t'
#define sp          ' '
using namespace std;

const int MX=100005, MOD=998244353, BLOCK=327, INF=2e9+7;
const ll INFF=1e18+7;
const ld ERR=1e-7, pi=3.14159265358979323846;

int N, M, Q, vis[MX], cnt;
vector<int> adj[MX];
vector<pii> far[MX];


int DFS(int x){
    int ret=(vis[x]==Q ? -MX : 0);
    for(auto i:adj[x]){
        ret=max(ret, DFS(i)+1);
    }
    return ret;
}

int main() {
    fastio;
    cin >> N >> M >> Q;
    for(int i=0, u, v; i<M; i++){
        cin >> u >> v;
        adj[v].pb(u);
    }
    memset(vis, -1, sizeof(vis));
    while(Q--){
        int X, Y;
        cin >> X >> Y;
        for(int i=Y, x; i>0; i--){
            cin >> x;
            if(x>X){
                Y--;
            }else{
                vis[x]=Q;
            }
        }
        if(Y==X){
            cout << "-1\n";
            continue;
        }

            cout << DFS(X) << nl;

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