#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int mxN = 5e5+10;
set<int> rem;
set<int> adj[mxN];
int last[mxN], now = 0, beg;
void dfs(int node) {
    if(adj[node].size() == 0) return;
    cout << node << ' ';
    last[node] = now;
    int nxt = -1;
    for(auto it : adj[node]) {
        if(it == beg) {
            nxt = beg; break;
        }
        if(last[it] == now) continue;
        nxt = it;
    }
    if(nxt == -1) {
        while(1) {}
    }
    adj[node].erase(nxt);
    if(adj[node].size() == 0) rem.erase(node);
    adj[nxt].erase(node);
    if(adj[nxt].size() == 0) rem.erase(nxt);
    dfs(nxt);
}
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].insert(b);
        adj[b].insert(a);
    }
    for(int i = 1; i <= n; i++) rem.insert(i);
    while(!rem.empty()) {
        int node = *rem.begin();
        ++now; beg = node;
        dfs(node);
        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... |