Pagini recente » Cod sursa (job #1996181) | Cod sursa (job #2220824) | Cod sursa (job #734514) | Cod sursa (job #130158) | Cod sursa (job #1199890)
#include <cstdio>
#include <vector>
#define pb push_back
#define rint register int
const char IN[14] = "mesaj4.in";
const char OUT[14] = "mesaj4.out";
const int MAX = 100100;
using namespace std;
struct retin{
int a,b;
};
vector <int> gr[MAX];
int n,fr[MAX],nr;
retin q[MAX];
void dfs(int nod);
int main()
{
int m;
freopen(IN,"r",stdin);
freopen(OUT,"w",stdout);
scanf("%d%d",&n,&m);
while(m--){
int x,y;
scanf("%d%d",&x,&y);
gr[x].pb(y);
gr[y].pb(x);
}
dfs(1);
if(nr!=n-1){
printf("-1\n");
return 0;
}
printf("%d\n",2*n-2);
for(rint i=n-1;i>=1;--i)printf("%d %d\n",q[i].b,q[i].a);
for(rint i=1;i<n;++i)printf("%d %d\n",q[i].a,q[i].b);
return 0;
}
void dfs(int nod){
fr[nod]=1;
for(rint i=0;i<(int)gr[nod].size();++i){
if(!fr[gr[nod][i]]){
++nr;
q[nr].a=nod;
q[nr].b=gr[nod][i];
dfs(gr[nod][i]);
}
}
}