Cod sursa(job #2924271)

Utilizator FischerMiguel Mini Fischer Data 28 septembrie 2022 13:20:13
Problema Mesaj4 Scor 100
Compilator cpp-32 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <bits/stdc++.h>
using namespace std;

const int maxn = 1e5 + 5;
vector<int> g[maxn];
bitset<maxn> vis;
vector<pair<int, int>> res;
void dfs(int x) {
    vis[x]=1;
    for (int v:g[x]) {
        if (vis[v]) continue;
        res.emplace_back(x, v);
        dfs(v);
    }
} 

int main() {
    freopen("mesaj4.in", "r", stdin);
    freopen("mesaj4.out", "w", stdout);
    int n, m;
    cin>>n>>m;
    for (int i=0; i<m; ++i) {
        int u, v;
        cin>>u>>v;
        g[u].emplace_back(v);
        g[v].emplace_back(u);
    }
    int c=0;
    for (int i=1; i<=n; ++i) {
        if (!vis[i]) {
            c++;
            if (c == 2) {
                return cout << -1 << '\n', 0;
            }
            dfs(i);
        }
    }
    cout << 2 * (n-1) << '\n';
    for (int i=n-2; i>=0; --i) {
        cout << res[i].second << " " << res[i].first << '\n';    
    }
    for (int i=0; i<n-1; ++i) {
        cout << res[i].first << " " << res[i].second << '\n';    
    }
    return 0;
}