Submission #1315845

#TimeUsernameProblemLanguageResultExecution timeMemory
1315845wangzhiyi33Bitaro’s Party (JOI18_bitaro)C++20
100 / 100
1678 ms513524 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define ii pair<int,int> #define fir first #define sec second #define pb push_back const int maxn=1e5; const int mx=200; int n,m,qu; vector<int>adj[maxn+2]; ii dist[maxn+2]; vector<ii>path[maxn+2]; void precom(){ for(int q=1;q<=n;q++){ vector<int>node; node.pb(q); dist[q]={0,q}; for(auto x : adj[q]){ for(auto [brp,idx] : path[x]){ if(dist[idx].sec!=q){ dist[idx]={brp+1,q}; node.pb(idx); } else{ dist[idx].fir=max(dist[idx].fir,brp+1); } } } for(auto x : node){ path[q].pb({dist[x].fir,x}); //if(q==4)cout<<dist[x].fir<<"K"<<x<<endl; } sort(path[q].rbegin(),path[q].rend()); while(path[q].size()>mx){ path[q].pop_back(); } } } bool skip[maxn+2]; int val[maxn+2]; signed main(){ ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0); cin>>n>>m>>qu; for(int q=1;q<=m;q++){ int u,v; cin>>u>>v; adj[v].pb(u); } precom(); while(qu--){ int city,brp; cin>>city>>brp; vector<int>apa; for(int q=1;q<=brp;q++){ int x;cin>>x; apa.pb(x); skip[x]=true; } if(brp<mx){ int ans=-1; for(auto [jrk,idx] : path[city]){ if(skip[idx])continue; ans=jrk; break; } cout<<ans<<endl; } else{ for(int q=1;q<=n;q++){ val[q]=0; } for(int q=1;q<=city;q++){ for(auto x : adj[q]){ val[q]=max(val[x]+1,val[q]); } if(val[q]==0 && skip[q]){ val[q]=-1; } } cout<<val[city]<<endl; } for(auto x : apa){ skip[x]=false; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...