제출 #567562

#제출 시각아이디문제언어결과실행 시간메모리
567562RealSnakeBitaro’s Party (JOI18_bitaro)C++14
14 / 100
2099 ms264292 KiB
#include "bits/stdc++.h" using namespace std; #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; typedef tree<pair<int, int>, null_type, less<pair<int,int>>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; #define ll long long #define mod 1000000007 ofstream fout(".out"); ifstream fin(".in"); vector<int> par[100001]; vector<pair<int, int>> v[100001]; int dis[100001][320], city[100001][320], b[100001], diss[100001]; ll dd[100001], idk[100001]; signed main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); ll n, m, q; cin >> n >> m >> q; for(int i = 0; i < m; i++) { int u, v; cin >> u >> v; par[v].push_back(u); } int sqr = sqrt(n); int o = 1; for(ll i = 1; i <= n; i++) { v[i].push_back({0, i}); for(int j : par[i]) { int sz = v[j].size(); for(int k = 0; k < sz; k++) { int d = v[j][k].first, c = v[j][k].second; if(d * i * n + 1 > dd[c]) { dd[c] = d * i * n + 1; v[i].push_back({d, c}); if(idk[c] < i * n) idk[c] = i * n; idk[c]++; } } } sort(v[i].rbegin(), v[i].rend()); int sz = v[i].size(), szz = 0; for(int j = 0; j < sz; j++) { int d = v[i][j].first, c = v[i][j].second; if(b[c] != i) { b[c] = i; dis[i][szz] = d; city[i][szz] = c; szz++; if(szz == sqr + 1) break; if(idk[c] > i * n) j += (idk[c] - (i * n)); } } } o = -1e9; while(q--) { int t, sz; cin >> t >> sz; for(int i = 0; i < sz; i++) { int x; cin >> x; diss[x] = o; } if(t > sqr) { for(int i = 1; i <= t; i++) { if(diss[i] != o) diss[i] = 0; for(int j : par[i]) diss[i] = max(diss[i], diss[j] + 1); } if(diss[t] < 0) diss[t] = -1; cout << diss[t] << "\n"; o += n + 1; continue; } int ans = -1; for(int i = 0; i <= sqr; i++) { if(!city[t][i]) break; if(diss[city[t][i]] != o) { ans = dis[t][i]; break; } } o += n + 1; cout << ans << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...