제출 #1221245

#제출 시각아이디문제언어결과실행 시간메모리
1221245vanea어르신 집배원 (BOI14_postmen)C++20
100 / 100
284 ms122376 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const int mxN = 5e5+10; vector<array<int, 2>> adj[mxN]; bool vis[mxN], trav[mxN]; stack<int> s; void dfs(int node) { vis[node] = true; s.push(node); for(auto [it, idx] : adj[node]) { if(trav[idx]) continue; if(vis[it]) { trav[idx] = true; int x = node; s.pop(); vector<int> ans; while(x != it) { ans.push_back(x); x = s.top(); s.pop(); } s.push(it); ans.push_back(it); for(auto it : ans) { cout << it << ' '; } cout << '\n'; if(node != s.top()) break; } else { trav[idx] = true; dfs(it); if(node != s.top()) break; } } vis[node] = false; if(!s.empty() && s.top() == node) s.pop(); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n, m; cin >> n >> m; for(int i = 0; i < m; i++) { int a, b; cin >> a >> b; adj[a].push_back({b, i}); adj[b].push_back({a, i}); } for(int i = 1; i <= n; i++) { for(auto [it, idx] : adj[i]) { if(!trav[idx]) dfs(i); } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...