Submission #1234064

#TimeUsernameProblemLanguageResultExecution timeMemory
1234064nguyenphong233Bitaro’s Party (JOI18_bitaro)C++20
0 / 100
2 ms4932 KiB
// 23 - 12 - 23 #include<bits/stdc++.h> using namespace std; #define read() ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0) #define day() time_t now = time(0);char* x = ctime(&now);cerr<<"Right Now Is : "<<x<<"\n" #define ii pair<int,int> #define X first #define Y second const long long MAX = (int)1e5 + 5; const long long INF = (int)1e9; const long long MOD = (int)1e9 + 7; const int BASE = 100; int n,m,q; vector<int> adj[MAX]; int dd[MAX][2]; vector<ii> lenx[MAX]; int mp[MAX]; int dist[MAX]; void solve(int s,int times){ for(int i = 1;i <= s;i++){ dist[i] = 0; for(auto v : adj[i]){ dist[i] = max(dist[v] + 1,dist[i]); } if(dist[i] == 0 && mp[i] == times)dist[i] = -1; } cout << dist[s] << '\n'; } signed main(){ read(); cin >> n >> m >> q; for(int i = 1,u,v;i <= m;i++){ cin >> u >> v; adj[v].push_back(u); } for(int i = 1;i <= n;i++){ dd[i][0] = 0; dd[i][1] = i; vector<int> cur; cur.push_back(i); for(auto v : adj[i]){ for(auto e : lenx[v]){ int p = e.Y; if(dd[p][1] != i){ dd[p][1] = i; dd[p][0] = -e.X + 1; cur.push_back(p); }else{ dd[p][0] = max(dd[p][0],-e.X + 1); } } } for(auto v : cur)lenx[i].push_back({-dd[v][0],v}); sort(lenx[i].begin(),lenx[i].end()); while(lenx[i].size() > BASE)lenx[i].pop_back(); // cout << i << " :\n"; // for(auto v : lenx[i])cout << -v.X << " " << v.Y << '\n'; } for(int i = 1;i <= q;i++){ int t,y; cin >> t >> y; for(int j = 1,u;j <= y;j++){ cin >> u; mp[u] = i; } if(y >= BASE)solve(t,i); else { for(auto v : lenx[t]){ if(mp[v.Y] != i){ cout << -v.X << "\n"; break; } } } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...