Pagini recente » Cod sursa (job #2020486) | Cod sursa (job #785624) | Cod sursa (job #373844) | Cod sursa (job #3142740) | Cod sursa (job #1863129)
#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;
}