Submission #1095836

#TimeUsernameProblemLanguageResultExecution timeMemory
1095836mohammad86Bitaro’s Party (JOI18_bitaro)C++17
14 / 100
1620 ms419404 KiB
// https://oj.uz/problem/view/JOI18_bitaro #include <bits/stdc++.h> using namespace std; typedef pair<int, int> pii; const int maxn = 1e5 + 100; const int sqrtn = 320; int n, m, q; vector<int> adj[maxn]; vector<int> readj[maxn]; vector<pii> fv[maxn]; bool mark[maxn]; int main () { ios_base::sync_with_stdio(false); cin >> n >> m >> q; for (int i = 1; i <= m; i++) { int s, e; cin >> s >> e; adj[s].push_back(e); readj[e].push_back(s); } for (int i = 1; i <= n; i++) { vector<pii> tmp; tmp.push_back({0, i}); for (int k = 0 ; k <= sqrtn; k++) { for (int j : readj[i]) { if (fv[j].size() > k) { tmp.push_back({fv[j][k].first+1, fv[j][k].second}); } } if (tmp.size() > sqrtn) { break; } } sort(tmp.begin(), tmp.end(), greater<pii>()); for (int j = 0; j < min(int(tmp.size()), sqrtn); j++) { fv[i].push_back({tmp[j].first, tmp[j].second}); } } for (int i = 1; i <= q; i++) { int t, y; cin >> t >> y; if (y < sqrtn) { vector<int> tmp; for (int i = 1; i <= y; i++) { int c; cin >> c; tmp.push_back(c); } bool is_find = false; for (pii i : fv[t]) { if (!binary_search(tmp.begin(), tmp.end(), i.second)) { cout << i.first << endl; is_find = true; break; } } if (!is_find) { cout << -1 << endl; } } else { for (int i = 1; i <= n; i++) { mark[i] = false; } for (int i = 1; i <= y; i++) { int c; cin >> c; mark[c] = true; } vector<int> dis(t+2, -1); int maximum = -1; dis[t] = 0; if (!mark[t]) { maximum = 0; } for (int i = t-1; i >= 1; i--) { for (int j : adj[i]) { if (j > t || dis[j] == -1) { continue; } dis[i] = max(dis[i], dis[j] +1); } if (!mark[i]) maximum = max(maximum, dis[i]); } cout << maximum << endl; } } }

Compilation message (stderr)

bitaro.cpp: In function 'int main()':
bitaro.cpp:32:34: warning: comparison of integer expressions of different signedness: 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   32 |                 if (fv[j].size() > k) {
      |                     ~~~~~~~~~~~~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...