Cod sursa(job #1770385)

Utilizator PaulStighiStiegelbauer Paul-Alexandru PaulStighi Data 4 octombrie 2016 10:33:35
Problema Mesaj4 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<iostream>
#include<fstream>
#include<vector>
#define NMax 100005
using namespace std;

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

struct fam
{
    int dad,son;
};

int N,M,K;
bool Use[NMax];
fam F[NMax];

vector <int> V[NMax];

void Read()
{
    fin>>N>>M;

    for(int i = 1 ; i <= M ; ++i)
    {
        int a,b;    fin>>a>>b;
        V[a].push_back(b);
        V[b].push_back(a);
    }
}

void DFS(int nod)
{
    Use[nod] = 1;

    for(int i = 0 ; i < V[nod].size() ; ++i)
    {
        int Vecin = V[nod][i];

        if(!Use[Vecin])
        {
            K++;
            F[K].dad = nod;
            F[K].son = Vecin;
            DFS(Vecin);
        }
    }
}

void Print()
{
    if(K == N-1)
    {
        fout<<2*(N-1)<<"\n";

        for(int i = K ; i >= 1 ; i--)
            fout<<F[i].son<<" "<<F[i].dad<<"\n";
        for(int i = 1 ; i <= K ; i++)
            fout<<F[i].dad<<" "<<F[i].son<<"\n";
    }
    else    fout<<"-1\n";
}

int main()
{
    Read();
    DFS(1);
    Print();

    fin.close();
    fout.close();
    return 0;
}