Pagini recente » Cod sursa (job #2304478) | Cod sursa (job #565793) | Cod sursa (job #2459479) | Cod sursa (job #394177) | Cod sursa (job #466380)
Cod sursa(job #466380)
#include <cstdio>
#define MaxN 100024
#define infile "mesaj4.in"
#define outfile "mesaj4.out"
int a[MaxN],b[MaxN];
int T;
int uz[MaxN];
int N,M;
struct edge{
int x;
edge *next;
} *G[MaxN];
void add(int a,int b)
{
edge *aux=new edge;
aux->x=b; aux->next=G[a]; G[a]=aux;
}
void read()
{
int a,b;
scanf("%d%d",&N,&M);
for(;M;M--)
{
scanf("%d%d",&a,&b);
add(a,b); add(b,a);
}
}
void dfs(int nod)
{
edge *q;
for(q=G[nod];q;q=q->next)
if(!uz[q->x])
{
a[++T]=nod;
b[T]=q->x;
uz[q->x]=1;
dfs(q->x);
}
}
int verif()
{
int i;
for(i=1;i<=N;i++)
if(!uz[i])
return 0;
return 1;
}
void write()
{
int i;
if(verif())
{
printf("%d\n",2*T);
for(i=T;i>=1;i--)
printf("%d %d\n",b[i],a[i]);
for(i=1;i<=T;i++)
printf("%d %d\n",a[i],b[i]);
}
else
printf("-1\n");
}
int main()
{
freopen(infile,"r",stdin);
freopen(outfile,"w",stdout);
read();
uz[1]=1;
dfs(1);
write();
fclose(stdin);
fclose(stdout);
return 0;
}