제출 #1213693

#제출 시각아이디문제언어결과실행 시간메모리
1213693boss_zzBitaro’s Party (JOI18_bitaro)C++17
100 / 100
1354 ms416432 KiB
#include<bits/stdc++.h> #define rep(a,b,c) for(ll a=b;a<=c;++a) #define ll int #define ff first #define ss second #define mp make_pair using namespace std; typedef pair<int,int> pii; typedef pair<ll,ll> pll; const ll N=1e5+5,inf=1e18,B=300; ll n,m,q,dp[N],Q[N]; vector<ll> adj_pos[N],adj_opp[N]; vector<pll> T[N],tmp,PV; bitset<N> ban,vis; void F(vector<pll> &T){ sort(T.begin(),T.end(),[](pll a,pll b){return a.ss>b.ss;}); if((ll)T.size()>B) T.resize(B); } void build(){ rep(i,1,n) T[i].push_back(mp(i,0)); rep(i,2,n){ for(ll j:adj_opp[i]){ PV.clear(); for(auto o:T[j]) PV.push_back(mp(o.ff,o.ss+1)); tmp.resize((ll)T[i].size()+(ll)PV.size()); merge(PV.begin(),PV.end(),T[i].begin(),T[i].end(),tmp.begin(),[](pll a,pll b){return a.ss>b.ss;}); T[i].clear(); for(ll k=0;k<(ll)tmp.size()&&(ll)T[i].size()<B;++k) if(!vis[tmp[k].ff]) vis[tmp[k].ff]=1,T[i].push_back(tmp[k]); for(auto o:T[i]) vis[o.ff]=0; } } } ll SMALL(ll v){ for(auto o:T[v]) if(!ban[o.ff]) return o.ss; return -1; } ll BIG(ll v){ fill(dp+1,dp+n+1,-1); dp[v]=0; for(ll i=v-1;i>=1;--i){ for(ll j:adj_pos[i]){ if(dp[j]==-1) continue; dp[i]=max(dp[i],dp[j]+1); } } ll ans=-1; rep(i,1,v) if(!ban[i]) ans=max(ans,dp[i]); return ans; } signed main(){ ios::sync_with_stdio(0);cin.tie(0); cin>>n>>m>>q; rep(i,1,m){ ll u,v; cin>>u>>v; if(u>v) swap(u,v); adj_pos[u].push_back(v); adj_opp[v].push_back(u); } build(); while(q--){ ll v,k,x; cin>>v>>k; rep(i,1,k) cin>>x,Q[i]=x,ban[x]=1; if(k>=B) cout<<BIG(v)<<'\n'; else cout<<SMALL(v)<<'\n'; rep(i,1,k) ban[Q[i]]=0; } return 0; }

컴파일 시 표준 에러 (stderr) 메시지

bitaro.cpp:10:22: warning: overflow in conversion from 'double' to 'int' changes value from '1.0e+18' to '2147483647' [-Woverflow]
   10 | const ll N=1e5+5,inf=1e18,B=300;
      |                      ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...