Cod sursa(job #2654852)

Utilizator refugiatBoni Daniel Stefan refugiat Data 2 octombrie 2020 15:19:54
Problema Mesaj4 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream si("mesaj4.in");
ofstream so("mesaj4.out");
bool viz[100005];
vector<int> v[100005];
vector<pair<int, int> > sol;

void dfs(int x) {
    viz[x]=1;
    for(int k=0; k<v[x].size(); k++)
        if(!viz[v[x][k]]) {
            sol.push_back(make_pair(v[x][k], x));
            dfs(v[x][k]);
        }
}

int main() {
    int n, m;
    si>>n>>m;
    for(int i=1; i<=m; i++) {
        int x, y;
        si>>x>>y;
        v[x].push_back(y);
        v[y].push_back(x);
    }
    dfs(1);
    bool conex=true;
    for(int i=1; i<=n; i++)
        if(!viz[i]) {
            conex=false;
            break;
        }
    if(!conex)
        so<<"-1\n";
    else {
        so<<2*n-2<<'\n';
        for(int i=n-2; i>=0; i--)
            so<<sol[i].first<<' '<<sol[i].second<<'\n';
        for(int i=0; i<n-1; i++)
            so<<sol[i].second<<' '<<sol[i].first<<'\n';
    }
    return 0;
}