#include<bits/stdc++.h>
using namespace std;
int n, m;
vector<vector<int>> adj, ans;
map<pair<int, int>, bool> streetCovered;
vector<bool> visited;
vector<int> currAns;
void showCurrAns(){
    cout << "Curr ans: \n";
    for(auto u : currAns){
        cout << u+1 << " ";
    }
    cout << "\n";
}
void showVisited(){
    cout << "Visited: \n";
    for(auto u : visited){
        cout << u << " ";
    }
    cout << "\n";
}
void showStreetCovered(){
    cout << "Streets covered: \n";
    for(auto u : streetCovered){
        cout << u.first.first+1 << " und " << u.first.second+1 << " = " << u.second << "\n";
    }
}
void dfs(int x){
    if(visited[x]){
        ans.push_back({x});
        //showCurrAns();
        while(!currAns.empty() && currAns.back()!=x){
            ans.back().push_back(currAns.back());
            visited[currAns.back()]=false;
            currAns.pop_back();
        }
        if(!currAns.empty()) currAns.pop_back();
        //showCurrAns();
        //showVisited();
    }
    visited[x]=true;
    currAns.push_back(x);
    while(streetCovered[{x, adj[x].back()}]) adj[x].pop_back();
    for(auto u : adj[x]){
        visited[x]=true;
        if(currAns.back()!=x)currAns.push_back(x);
        if(streetCovered[{u, x}])continue;
        streetCovered[{u, x}]=true;
        streetCovered[{x, u}]=true;
        dfs(u);
    }
    while(streetCovered[{x, adj[x].back()}]) adj[x].pop_back();
    visited[x]=false;
}
signed main(){
    cin >> n >> m;
    adj.resize(n); visited.resize(n, false);
    for(int i = 0; i < m; i++){
        int u, v;
        cin >> u >> v; u--; v--;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }
    for(int i = 0; i < n; i++){
        dfs(i);
    }
    for(int i = 0; i < ans.size(); i++){
        for(int j = 0; j < ans[i].size(); j++){
            cout << ans[i][j]+1 << " ";
        }
        cout << "\n";
    }
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |