Cod sursa(job #1716673)

Utilizator oldatlantianSerban Cercelescu oldatlantian Data 13 iunie 2016 13:35:13
Problema Mesaj4 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <bits/stdc++.h>
using namespace std;

const int NMAX = 100005;

vector<pair<int, int> > path;
vector<int> g[NMAX];
bool        f[NMAX];
int         a[NMAX],
            p[NMAX];

void dfs(int u) {
    f[u] = true;
    for(auto &i:g[u]) {
        if(!f[i]) {
            p[u]++;
            a[i] = u;
            dfs(i);
            path.push_back(make_pair(i, u));
        }
    }
}

int main(void) {
    freopen("mesaj4.in", "r", stdin);
    freopen("mesaj4.out", "w", stdout);
    int n, m, a, b;

    scanf("%d%d",&n,&m);
    while(m--) {
        scanf("%d%d",&a,&b);
        g[a].push_back(b);
        g[b].push_back(a);
    }

    dfs(1);

    for(int i=1; i<=n; ++i) {
        if(!f[i]) {
            printf("-1\n");
            return 0;
        }
    }

    printf("%d\n",path.size()*2);
    for(int i=path.size()-1; i>=0; --i)
        printf("%d %d\n",path[i].first,path[i].second);
    for(int i=path.size()-1; i>=0; --i)
        printf("%d %d\n",path[i].second,path[i].first);

    fclose(stdin);
    fclose(stdout);
    return 0;
}