Cod sursa(job #1863129)

Utilizator paulstepanovStepanov Paul paulstepanov Data 30 ianuarie 2017 18:41:19
Problema Mesaj4 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <iostream>
#include <fstream>
#include <vector>
#define Nmax 100005
using namespace std;
ifstream fin("mesaj4.in");
ofstream fout("mesaj4.out");

struct Familie{
int Dad;
int Son;
};

int N,M,K;
Familie F[Nmax];
bool Use[Nmax];
vector <int> G[Nmax];

void Read()
{
    int N,M;
    fin>>N>>M;
    while(M--)
    {
        int a,b;
        fin>>a>>b;
        G[a].push_back(b);
        G[b].push_back(a);
    }
}

void DFS(int Node)
{
    Use[Node]=1;
    for(int i=0;i<G[Node].size();++i)
    {
        int Neigh=G[Node][i];
        if(!Use[Neigh])
        {
            K++;
            F[K].Dad=Node;
            F[K].Son=Neigh;
            DFS(Neigh);
        }
    }
}

void Print()
{
    if(K==N-1)
    {
        fout<<2*K<<"\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();
    return 0;
}