Submission #1262413

#TimeUsernameProblemLanguageResultExecution timeMemory
1262413EntityPlanttSenior Postmen (BOI14_postmen)C++20
38 / 100
820 ms33096 KiB
#include <bits/stdc++.h> using namespace std; constexpr int N = 5e5; vector<int> g[N]; int vis[N]; bitset<N> path; set<int> connected; int dfs(int u) { path.set(u); while (!g[u].empty()) { int v = g[u].back(); g[v].erase(find(g[v].begin(), g[v].end(), u)); if (g[v].empty()) connected.erase(v); g[u].pop_back(); 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].push_back(--b); g[b].push_back(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...