Submission #844958

#TimeUsernameProblemLanguageResultExecution timeMemory
844958guagua0407Bitaro’s Party (JOI18_bitaro)C++17
14 / 100
2053 ms293180 KiB
#pragma GCC optimize("O3") #include <bits/stdc++.h> using namespace std; #define ll long long #define pii pair<int,int> #define f first #define s second #define all(x) x.begin(),x.end() #define _ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); void setIO(string s) { freopen((s + ".in").c_str(), "r", stdin); freopen((s + ".out").c_str(), "w", stdout); } const int K=60; const int mxn=1e5+5; vector<int> adj[mxn]; set<pair<int,int> > S[mxn]; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); auto st=clock(); int n,m,q; cin>>n>>m>>q; for(int i=0;i<m;i++){ int a,b; cin>>a>>b; a--; b--; adj[b].push_back(a); } for(int i=0;i<n;i++){ S[i].insert({0,i}); for(auto v:adj[i]){ for(auto u:S[v]){ S[i].insert({u.f+1,u.s}); if((int)S[i].size()>K){ S[i].erase(S[i].begin()); } } } } assert((double)(clock()-st)/CLOCKS_PER_SEC<1); for(int i=0;i<q;i++){ int v; cin>>v; v--; int t; cin>>t; vector<int> vec(t); for(int j=0;j<t;j++){ cin>>vec[j]; vec[j]--; } //sort(all(vec)); if(t>=(int)S[v].size()){ vector<int> d(n,-1); d[v]=0; for(int j=v;j>=0;j--){ if(d[j]==-1) continue; for(auto u:adj[j]){ d[u]=max(d[u],d[j]+1); } } int ans=-1; for(int j=0;j<=v;j++){ if(upper_bound(all(vec),j)-lower_bound(all(vec),j)==0){ ans=max(ans,d[j]); } } cout<<ans<<'\n'; } else{ bool tf=false; for(auto it=S[v].rbegin();it!=S[v].rend();it++){ auto u=*it; if(upper_bound(all(vec),u.s)-lower_bound(all(vec),u.s)==0){ cout<<u.f<<'\n'; tf=true; break; } } assert(tf); } } }

Compilation message (stderr)

bitaro.cpp: In function 'void setIO(std::string)':
bitaro.cpp:12:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   12 |     freopen((s + ".in").c_str(), "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bitaro.cpp:13:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   13 |     freopen((s + ".out").c_str(), "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...