Cod sursa(job #1643753)

Utilizator ovidiuz98Zamfir Ovidiu ovidiuz98 Data 9 martie 2016 20:06:35
Problema Mesaj4 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <bits/stdc++.h>
#define DIM 100005

using namespace std;

ifstream fin("mesaj4.in");
ofstream fout("mesaj4.out");

int N,M,x,y;
vector <int> v[DIM];
bitset <DIM> viz;

void dfs(int x){

    viz[x]=1;

    for(int i=0;i<v[x].size();i++){
        if(!viz[v[x][i]])
            dfs(v[x][i]);
    }

}

void dfs1(int x,int t){

    viz[x]=1;

    for(int i=0;i<v[x].size();i++){
        if(!viz[v[x][i]])
            dfs1(v[x][i],x);
    }

    if(t!=0){
        fout << x << " " << t << "\n";
    }
}

void dfs2(int x){

    viz[x]=1;

    for(int i=0;i<v[x].size();i++){
        if(!viz[v[x][i]]){
            fout << v[x][i] << " " << x << "\n";
            dfs2(v[x][i]);
        }
    }

}

int main(){

    fin >> N >> M;

    while(M--){
        fin >> x >> y;
        v[x].push_back(y);
        v[y].push_back(x);
    }

    dfs(1);

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

    fout << 2 * (N-1) << "\n";

    viz.reset();
    dfs1(1,0);
    viz.reset();
    dfs2(1);
}