Submission #1262417

#TimeUsernameProblemLanguageResultExecution timeMemory
1262417EntityPlanttSenior Postmen (BOI14_postmen)C++20
100 / 100
495 ms160460 KiB
#include <bits/stdc++.h> using namespace std; #pragma GCC optimize("Ofast,unroll-loops,O2") constexpr int N = 5e5; int vis[N]; bitset<N> path; set<int> connected, g[N]; int dfs(int u) { path.set(u); while (!g[u].empty()) { int v = *g[u].begin(); g[v].erase(u); if (g[v].empty()) connected.erase(v); g[u].erase(g[u].begin()); if (g[u].empty()) connected.erase(u); if (path.test(v)) { path.reset(u); cout << u + 1 << ' '; return v; } int r = dfs(v); if (r != u) { path.reset(u); cout << u + 1 << ' '; return r; } else cout << u + 1 << '\n'; } return -1; } signed main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, m; cin >> n >> m; while (m--) { int a, b; cin >> a >> b; g[--a].insert(--b); g[b].insert(a); } for (int i = 0; i < n; i++) if (!g[i].empty()) connected.insert(i); while (!connected.empty()) dfs(*connected.begin()); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...