제출 #1269993

#제출 시각아이디문제언어결과실행 시간메모리
1269993rtriSenior Postmen (BOI14_postmen)C++20
38 / 100
1095 ms15808 KiB
#include <bits/stdc++.h> using namespace std; int used_edges = 0; vector<bool> used; vector<vector<pair<int, int>>> adj; vector<int> edgtojun; vector<bool> vis; vector<int> sol; bool dfs(int u, int start = -1, int p = -1) { if (u == start) { return true; } if (start == -1) start = u; if (vis[u]) return false; vis[u] = 1; for (auto [v, edg] : adj[u]) { if (!used[edg] && v != p) { if (dfs(v, start, u)) { used[edg] = 1; used_edges++; sol.push_back(u); return true; } } } return false; } int main() { int n, m; cin >> n >> m; adj.resize(n); used.resize(m); edgtojun.resize(m); for (int i = 0; i < m; i++) { int u, v; cin >> u >> v; u--; v--; adj[u].push_back({v, i}); adj[v].push_back({u, i}); edgtojun[i] = u; } vis.resize(n); vector<vector<int>> sols; for (int i = 0; i < m; i++) { fill(vis.begin(), vis.end(), false); if (dfs(edgtojun[i])) { reverse(sol.begin(), sol.end()); sols.push_back(sol); sol.clear(); } } for (auto sol : sols) { for (int idx : sol) cout << idx + 1 << " "; cout << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...