Submission #1122270

#TimeUsernameProblemLanguageResultExecution timeMemory
1122270hengliaoBitaro’s Party (JOI18_bitaro)C++17
0 / 100
7 ms8280 KiB
#include <bits/stdc++.h>
#include <chrono>
#include <random>
using namespace std;

#define F first
#define S second
#define pb push_back
#define vll vector<ll>
#define pll pair<ll, ll>
typedef long long ll;

const ll mxN=1e5+5;

ll n, m, q;
vll adj[mxN];
vll qry[mxN];
ll siz[mxN];
vll y[mxN];
ll dp[mxN];
ll e[mxN];

ll f(ll idx, ll t){
    memset(dp, -1, sizeof(dp));
    ll re=-1;
    dp[t]=0;
    while(siz[idx]>0 && y[idx].back()>t){
        siz[idx]--;
        y[idx].pop_back();
    }
    for(ll i=t;i>=0;i--){
        if(siz[idx]>0 && y[idx].back()==i){
            siz[idx]--;
            y[idx].pop_back();
        }   
        else{
            re=max(re, dp[i]);
        }
        for(auto &it:adj[i]){
            dp[it]=max(dp[it], dp[i]+1);
        }
    }
    return re;
}


void solve(){
    cin>>n>>m>>q;
    for(ll i=0;i<m;i++){
        ll u, v;
        cin>>u>>v;
        u--; v--;
        adj[v].pb(u);
    }
    for(ll i=0;i<q;i++){
        cin>>e[i];
        e[i]--;
        qry[e[i]].pb(i);
        cin>>siz[i];
        for(ll j=0;j<siz[i];j++){
            ll tep;
            cin>>tep;
            tep--;
            y[i].pb(tep);
        }
    }
    assert(q==1);
    cout<<f(0, e[0])<<'\n';
}

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

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