Submission #733954

#TimeUsernameProblemLanguageResultExecution timeMemory
733954DAleksaSenior Postmen (BOI14_postmen)C++17
38 / 100
1086 ms23872 KiB
#include <bits/stdc++.h> using namespace std; struct edge { int v; int id; }; const int N = 5e5 + 10; vector<edge> g[N]; int n, m; vector<int> eulerian_cycle; bool mark[N]; int cnt[N]; int id = 0; void find_eulerian_cycle(int u) { for(edge v : g[u]) { if(mark[v.id]) continue; mark[v.id] = true; find_eulerian_cycle(v.v); eulerian_cycle.push_back(v.v); } } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin >> n >> m; for(int i = 0; i < m; i++) { int u, v; cin >> u >> v; g[u].push_back({v, id}); g[v].push_back({u, id++}); } find_eulerian_cycle(1); eulerian_cycle.push_back(1); vector<vector<int>> ans; stack<int> stk; stk.push(eulerian_cycle[0]); for(int i = 1; i <= n; i++) cnt[i] = 0; cnt[eulerian_cycle[0]]++; assert(eulerian_cycle.size() == m + 1); for(int i = 1; i < eulerian_cycle.size(); i++) { if(cnt[eulerian_cycle[i]] > 0) { ans.push_back({}); ans[ans.size() - 1].push_back(eulerian_cycle[i]); while(stk.top() != eulerian_cycle[i]) { ans[ans.size() - 1].push_back(stk.top()); cnt[stk.top()]--; stk.pop(); } } else { assert(cnt[eulerian_cycle[i]] == 0); cnt[eulerian_cycle[i]]++; stk.push(eulerian_cycle[i]); } } for(int i = 0; i < ans.size(); i++) { for(int j = 0; j < ans[i].size(); j++) cout << ans[i][j] << " "; cout << "\n"; } return 0; }

Compilation message (stderr)

In file included from /usr/include/c++/10/cassert:44,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33,
                 from postmen.cpp:1:
postmen.cpp: In function 'int main()':
postmen.cpp:44:34: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   44 |     assert(eulerian_cycle.size() == m + 1);
      |            ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
postmen.cpp:45:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |     for(int i = 1; i < eulerian_cycle.size(); i++) {
      |                    ~~^~~~~~~~~~~~~~~~~~~~~~~
postmen.cpp:60:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   60 |     for(int i = 0; i < ans.size(); i++) {
      |                    ~~^~~~~~~~~~~~
postmen.cpp:61:26: 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 < ans[i].size(); j++) cout << ans[i][j] << " ";
      |                        ~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...