Cod sursa(job #467742)

Utilizator S7012MYPetru Trimbitas S7012MY Data 30 iunie 2010 11:23:48
Problema Mesaj4 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <cstdio>
#define DN 100010
int a[DN],b[DN];
bool viz[DN];
struct nod {
	int x;
	nod *urm;
} *v[DN];

void dfs(int sursa) {
	nod *p;
	if(viz[sursa]) return;
	viz[sursa]=true;
	for(p=v[sursa]; p!=NULL; p=p->urm)
		if(!viz[p->x]) {
			dfs(p->x);
			a[++a[0]]=p->x;
            b[++b[0]]=sursa;
		}
}

void adaugare(int x,int y) {
	nod *p;
	p=new nod;
	p->x=y;
	p->urm=v[x];
	v[x]=p;
}

int main()
{
	freopen("mesaj4.in","r",stdin);
	freopen("mesaj4.out","w",stdout);
	int n,m,i,x,y;
	scanf("%d %d",&n,&m);
	for(i=1; i<=m; i++) {
		scanf("%d %d",&x,&y);
		adaugare(x,y);
		adaugare(y,x);
	}
	dfs(1);
	if(a[0]<n-1) { printf("-1\n"); return 0; }
	printf("%d\n", n*2-2);
	for(i=1; i<n; ++i)
        printf("%d %d\n", a[i], b[i]);
    for(i=n-1; i; --i)
        printf("%d %d\n", b[i], a[i]);
	return 0;
}