Submission #546506

#TimeUsernameProblemLanguageResultExecution timeMemory
546506stefantagaBitaro’s Party (JOI18_bitaro)C++14
14 / 100
1506 ms250260 KiB
#include <bits/stdc++.h> using namespace std; vector <int> v[100005],inv[100005]; int n,m,q,i,fr[100005],val[100005],ok[100005],distfin[100005],teste; pair <int,int > dist[100005][305]; int mar[100005]; vector <pair <int,int>> acum; vector <int> salut; bool compare (pair <int,int> a,pair <int,int> b) { return a.second>b.second; } int main() { ios_base :: sync_with_stdio(false); cin.tie(0); #ifdef HOME ifstream cin("date.in"); ofstream cout("date.out"); #endif // HOME cin>>n>>m>>teste; for (i=1;i<=m;i++) { int x,y; cin>>x>>y; if (x>y) { swap(x,y); } inv[y].push_back(x); } int bucket =150; for (i=1;i<=n;i++) { int numar=0; acum.clear(); salut.clear(); acum.push_back({i,0}); for (int j=0;j<inv[i].size();j++) { int nod = inv[i][j]; for (int k=1;k<=mar[nod];k++) { acum.push_back({dist[nod][k].first,dist[nod][k].second+1}); } } int lim = min((int)acum.size(),bucket); sort (acum.begin(),acum.end(),compare); for (int j=0;j<lim;j++) { if (fr[acum[j].second]==0) { fr[acum[j].second]=1; mar[i]++; dist[i][mar[i]]=acum[j]; salut.push_back(acum[j].second); } } for (int j=0;j<salut.size();j++) { fr[salut[j]]=0; } } for (i=1;i<=n;i++) { fr[i]=0; } for (;teste--;) { int nod,nr; cin>>nod >> nr; for (i=1;i<=nr;i++) { cin>>val[i]; fr[val[i]]=1; } if (nr>=bucket) { vector<int> dp(n, -1); for (int i = 0; i <= nod; i ++){ if (fr[i]==0){ dp[i] = max(dp[i], 0); } for (int j = 0; j < (int)inv[i].size(); j ++){ if (dp[inv[i][j]] != -1) dp[i] = max(dp[i], dp[inv[i][j]] + 1); } } cout << dp[nod] << '\n'; } else { int solfin=-1; for (int j=1;j<=mar[nod];j++) { int nod2 = dist[nod][j].first; if (fr[nod2]==0) { solfin=max(solfin,dist[nod][j].second); } } cout<<solfin<<'\n'; } for (i=1;i<=nr;i++) { fr[val[i]]=0; } } return 0; }

Compilation message (stderr)

bitaro.cpp: In function 'int main()':
bitaro.cpp:41:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   41 |         for (int j=0;j<inv[i].size();j++)
      |                      ~^~~~~~~~~~~~~~
bitaro.cpp:61:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   61 |         for (int j=0;j<salut.size();j++)
      |                      ~^~~~~~~~~~~~~
bitaro.cpp:37:13: warning: unused variable 'numar' [-Wunused-variable]
   37 |         int numar=0;
      |             ^~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...