Submission #829411

#TimeUsernameProblemLanguageResultExecution timeMemory
829411vjudge1Bitaro’s Party (JOI18_bitaro)C++17
100 / 100
1273 ms504364 KiB
#ifdef Home #define _GLIBCXX_DEBUG #endif // Home #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; const int N = 100100; const int SQ = 300; vector < int > adj[N], dp(N), use(N); vector < pair < int, int > > calc[N]; queue < pair < int, int > > q; int True; void merge(int a, int b) { ++ True; for(int i = 0, j = 0; q.size() < SQ;) { for(; i < calc[a].size() && use[calc[a][i].first] == True; ++ i); for(; j < calc[b].size() && use[calc[b][j].first] == True; ++ j); if(i == calc[a].size() && j == calc[b].size()) { break; } if(j == calc[b].size() || (i != calc[a].size() && calc[b][j].second < calc[a][i].second)) { q.push(calc[a][i]); use[calc[a][i].first] = True; ++ i; } else { ++ calc[b][j].second; q.push(calc[b][j]); -- calc[b][j].second; use[calc[b][j].first] = True; ++ j; } } calc[a].resize(q.size()); for(int i = 0; i < calc[a].size(); ++ i) { calc[a][i] = q.front(); q.pop(); } } main() { #ifdef Home freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); #endif // Home ios_base::sync_with_stdio(0); cin.tie(0); int n, m, Q, u, v; for(cin >> n >> m >> Q; m --> 0;) { cin >> u >> v; adj[u].push_back(v); } for(int i = 1; i <= n; ++ i) { calc[i].push_back({i, 0}); for(auto &j : adj[i]) { merge(j, i); } } /** for(int i = 1; i <= n; ++ i) { cout << i << "\n"; for(auto &[from, dist] : calc[i]) { cout << from << " ---- " << dist << '\n'; } cout << "\n\n\n"; } // */ for(int T, Y, C, tt; Q --> 0;) { ++ True; for(cin >> T >> Y, tt = Y; tt --> 0;) { cin >> C; use[C] = True; } if(Y < SQ) { int i = 0; for(; i < calc[T].size() && use[calc[T][i].first] == True; ++ i); cout << (i == calc[T].size() ? -1 : calc[T][i].second) << '\n'; } else { for(int i = 0; i < n; dp[++ i] = -1); for(int i = 1; i <= n; ++ i) { dp[i] += use[i] != True || dp[i] != -1; for(auto &j : adj[i]) { dp[j] = max(dp[j], dp[i]); } } cout << dp[T] << '\n'; } } }

Compilation message (stderr)

bitaro.cpp: In function 'void merge(int, int)':
bitaro.cpp:24:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   24 |         for(; i < calc[a].size() && use[calc[a][i].first] == True; ++ i);
      |               ~~^~~~~~~~~~~~~~~~
bitaro.cpp:25:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   25 |         for(; j < calc[b].size() && use[calc[b][j].first] == True; ++ j);
      |               ~~^~~~~~~~~~~~~~~~
bitaro.cpp:26:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |         if(i == calc[a].size() && j == calc[b].size()) {
      |            ~~^~~~~~~~~~~~~~~~~
bitaro.cpp:26:37: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |         if(i == calc[a].size() && j == calc[b].size()) {
      |                                   ~~^~~~~~~~~~~~~~~~~
bitaro.cpp:29:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   29 |         if(j == calc[b].size() || (i != calc[a].size() && calc[b][j].second < calc[a][i].second)) {
      |            ~~^~~~~~~~~~~~~~~~~
bitaro.cpp:29:38: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   29 |         if(j == calc[b].size() || (i != calc[a].size() && calc[b][j].second < calc[a][i].second)) {
      |                                    ~~^~~~~~~~~~~~~~~~~
bitaro.cpp:42:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   42 |     for(int i = 0; i < calc[a].size(); ++ i) {
      |                    ~~^~~~~~~~~~~~~~~~
bitaro.cpp: At global scope:
bitaro.cpp:48:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   48 | main() {
      | ^~~~
bitaro.cpp: In function 'int main()':
bitaro.cpp:84:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   84 |             for(; i < calc[T].size() && use[calc[T][i].first] == True; ++ i);
      |                   ~~^~~~~~~~~~~~~~~~
bitaro.cpp:85:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   85 |             cout << (i == calc[T].size() ? -1 : calc[T][i].second) << '\n';
      |                      ~~^~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...