Submission #94278

#TimeUsernameProblemLanguageResultExecution timeMemory
94278autumn_eelBitaro’s Party (JOI18_bitaro)C++14
7 / 100
2057 ms31572 KiB
#include <bits/stdc++.h> #define rep(i,n)for(int i=0;i<(n);i++) #define INF 0x3f3f3f3f using namespace std; typedef pair<int,int>P; #define B 40 vector<int>E[200000]; set<P>dp[200000]; unordered_map<int,int>mp[200000]; int dp2[200000]; int main(){ int n,m,q;cin>>n>>m>>q; rep(i,m){ int s,t;scanf("%d%d",&s,&t);s--;t--; E[s].push_back(t); } rep(i,n)dp[i].insert(P(0,i)); int cnt=0; rep(i,n){ for(auto&p:dp[i]){ for(int u:E[i]){ cnt++; int&d=mp[u][p.second]; if(d<=p.first){ dp[u].erase(P(d,p.second)); d=p.first+1; dp[u].insert(P(d,p.second)); } while(dp[u].size()>B)dp[u].erase(dp[u].begin()); } } } rep(i,q){ int t,y;scanf("%d%d",&t,&y);t--; set<int>v; rep(j,y){ int c;scanf("%d",&c);c--; v.insert(c); } if(y<B){ int Max=-1; for(auto p:dp[t]){ if(!v.count(p.second)){ Max=max(Max,p.first); } } printf("%d\n",Max); } else{ rep(i,n){ if(!v.count(i))dp2[i]=0; else dp2[i]=-INF; } rep(i,n){ for(int u:E[i]){ dp2[u]=max(dp2[u],dp2[i]+1); } } printf("%d\n",dp2[t]<0?-1:dp2[t]); } } }

Compilation message (stderr)

bitaro.cpp: In function 'int main()':
bitaro.cpp:18:16: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   int s,t;scanf("%d%d",&s,&t);s--;t--;
           ~~~~~^~~~~~~~~~~~~~
bitaro.cpp:38:16: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   int t,y;scanf("%d%d",&t,&y);t--;
           ~~~~~^~~~~~~~~~~~~~
bitaro.cpp:41:15: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    int c;scanf("%d",&c);c--;
          ~~~~~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...