제출 #1309461

#제출 시각아이디문제언어결과실행 시간메모리
1309461BalsaSenior Postmen (BOI14_postmen)C++20
38 / 100
1097 ms54532 KiB
#include <bits/stdc++.h> using namespace std; #define all(x) (x).begin(), (x).end() #define fi first #define se second using ll = long long; const ll MAXN = 500005, MAXM = 500005; unordered_set<ll> edges[MAXN]; bool vis[MAXN]; stack<ll> path; ll cycle = -1; bool dfs(ll v, ll p) { if (vis[v]) { cycle = v; return true; } vis[v] = 1; for (ll u : edges[v]) { if (u == p) continue; if (dfs(u, v)) { if (cycle == -1) return true; // erase v--u edges[v].erase(u); edges[u].erase(v); path.push(v); // cout << v << '\n'; if (v == cycle) cycle = -1; return true; } } return false; } void solve() { ll n, m; cin >> n >> m; for (ll i = 0; i < m; i++) { ll v, u; cin >> v >> u; v--, u--; edges[v].insert(u); edges[u].insert(v); } for (ll v = 0; v < n; v++) { if (edges[v].empty()) continue; memset(vis, 0, sizeof(vis)); dfs(v, -1); while (!path.empty()) { cout << path.top()+1 << ' '; path.pop(); } cout << '\n'; if (!edges[v].empty()) v--; } } int main() { // freopen("promote.in", "r", stdin); // freopen("promote.out", "w", stdout); ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...