Pagini recente » Cod sursa (job #2007352) | Cod sursa (job #315085) | Profil SebiSebi | Cod sursa (job #275514) | Cod sursa (job #1304718)
//horatiu11
# include <cstdio>
# include <vector>
# define nmax 100001
using namespace std;
int n,m,x,y,nr;
bool viz[nmax];
vector <int>G[nmax];
struct muchie{int x,y;}e;
vector <muchie>sol;
void dfs(int x)
{
vector <int>::iterator it;
viz[x]=true;
for(it=G[x].begin();it!=G[x].end();++it)
if(!viz[*it])
{
dfs(*it);
e.x=*it;e.y=x;++nr;
sol.push_back(e);
}
}
int main()
{
int i;
freopen("mesaj4.in","r",stdin);
freopen("mesaj4.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=m;++i)
{
scanf("%d%d",&x,&y);
G[x].push_back(y);
G[y].push_back(x);
}
dfs(1);
if(nr!=n-1)printf("-1\n");
else
{
vector <muchie>::iterator it;
printf("%d\n",2*(n-1));
for(it=sol.begin();it!=sol.end();++it)
printf("%d %d\n",(*it).x,(*it).y);
for(it=sol.end()-1;;--it)
{
printf("%d %d\n",(*it).y,(*it).x);
if(it==sol.begin())break;
}
}
return 0;
}