Cod sursa(job #1426068)

Utilizator paunmatei7FMI Paun Matei paunmatei7 Data 28 aprilie 2015 21:54:20
Problema Mesaj4 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <cstdio>
#include <algorithm>
#include <vector>

#define x first
#define y second
#define NMAX 1000007

using namespace std;

int n, m;
int Viz[NMAX];
vector < int > v[NMAX];
vector < pair < int, int > > Ans;

void dfs(int Nod){
    Viz[Nod] = 1;
    for(int i = 0; i < v[Nod].size(); ++i)
        if(Viz[v[Nod][i]] == 0){
            dfs(v[Nod][i]);
            Ans.push_back(make_pair(v[Nod][i], Nod));
        }
}

int main(){
    freopen("mesaj4.in", "r", stdin);
    freopen("mesaj4.out", "w", stdout);
    scanf("%d %d", &n, &m);
    for(int i = 1; i <= m; ++i){
        int A, B;
        scanf("%d %d", &A, &B);
        v[A].push_back(B);
        v[B].push_back(A);
    }

    dfs(1);
    if(Ans.size() < n - 1){
        printf("-1");
        return 0;
    }
    printf("%d\n", 2 * Ans.size());
    for(int i = 0; i < Ans.size(); ++i)
        printf("%d %d\n", Ans[i].x, Ans[i].y);
    for(int i = Ans.size() - 1; i >= 0; --i)
        printf("%d %d\n", Ans[i].y, Ans[i].x);
    return 0;
}