Cod sursa(job #735703)

Utilizator robertpoeRobert Poenaru robertpoe Data 17 aprilie 2012 09:49:24
Problema Mesaj4 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<cstdio>
#include<vector>
#define x first
#define y second
#define PP pair
#define dim 100005
using namespace std;
vector<int> a[dim];
PP<int, int> GOOD[dim+dim];
int n,m,nr;
int V[dim];
inline void dfs(int k)
{
	int i;
	V[k]=1;
	for(i=0;i<a[k].size();++i)
		if(!V[a[k][i]])
		{
			dfs(a[k][i]);
			GOOD[++nr].x=k;	
			GOOD[nr].y=a[k][i];
		}
}
int i,X,Y;
bool ok=1;
int main() 
{
	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);
		a[X].push_back(Y);
		a[Y].push_back(X);
	}
	dfs(1);
	for(i=1;i<n;++i)
		if(V[i]==0)
		{
			ok=0;
			break;
		}
	if(!ok) 
		printf("-1\n");
	else 
	{
		printf("%d\n", 2*(n-1));
		for(i=1;i<=nr;++i)
			printf("%d %d\n",GOOD[i].y,GOOD[i].x);
		for(i=nr;i>=1;--i)
			printf("%d %d\n",GOOD[i].x,GOOD[i].y);
	}
	return 0;
}