Submission #1150486

#TimeUsernameProblemLanguageResultExecution timeMemory
1150486The_SamuraiSenior Postmen (BOI14_postmen)C++20
100 / 100
193 ms68472 KiB
// I stand with PALESTINE // #pragma GCC optimize("Ofast,O3") // #pragma GCC target("avx,avx2") #include "bits/stdc++.h" using namespace std; using ll = long long; const int M = 5e5 + 5, N = 5e5 + 5; vector<bool> deleted(M); vector<vector<pair<int, int>>> g(N); vector<int> way; void dfs(int u) { while (!g[u].empty()) { if (deleted[g[u].back().second]) { g[u].pop_back(); continue; } deleted[g[u].back().second] = true; dfs(g[u].back().first); } way.emplace_back(u); } void solve() { int n, m; cin >> n >> m; for (int i = 0; i < m; i++) { int u, v; cin >> u >> v; g[u].emplace_back(v, i); g[v].emplace_back(u, i); } for (int i = 1; i <= n; i++) { if (g[i].size() % 2) assert(false); } dfs(1); if (way.size() < m + 1) assert(false); vector<int> last(n + 1, -1), vec; // for (int &x: way) cout << x << ' '; // cout << endl; for (int i = 0; i < way.size(); i++) { vec.emplace_back(way[i]); // cout << way[i] << ' ' << last[way[i]] << endl; if (last[way[i]] != -1) { cout << vec.back() << ' '; vec.pop_back(); while (vec.back() != way[i]) { last[vec.back()] = -1; cout << vec.back() << ' '; vec.pop_back(); } cout << '\n'; } else { last[way[i]] = i; } } } int main() { cin.tie(0)->sync_with_stdio(false); #ifdef sunnatov freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); #endif int q = 1; // cin >> q; while (q--) { solve(); // cout << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...