Cod sursa(job #715090)

Utilizator paul_gabryelPaul Buda paul_gabryel Data 16 martie 2012 17:11:51
Problema Mesaj4 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb

#include <vector>
#include <fstream>
#include <cstdio>

using namespace std;

#define N 100001
#define pb push_back
#define mp make_pair
#define f first
#define s second

vector<int> v[N];
vector<pair<int,int> > sol;
bool uz[N];
int n,m,ok;

void read ()
{
	ifstream in ("mesaj4.in");
	in>>n>>m;
	for(int i,j;m;--m)
	{
		in>>i>>j;
		v[i].pb(j);
		v[j].pb(i);
	}
}

void DF (int nd,int f)
{
	if(uz[nd])
		return;
	uz[nd]=1;
	++ok;
	sol.pb(mp(nd,f));
	for(vector<int>::iterator i=v[nd].begin();i<v[nd].end();++i)
		DF (*i,nd);
			
}

void out ()
{
	freopen ("mesaj4.out","w",stdout);
	if(ok!=n)
	{
		printf("-1");
		return;
	}
	printf("%d\n",(n-1)<<1);
	for(vector<pair<int,int> >::iterator i=sol.end()-1;i>sol.begin();--i)
		printf("%d %d\n",i->f,i->s);
	for(vector<pair<int,int> >::iterator i=sol.begin()+1;i<sol.end();++i)
		printf("%d %d\n",i->s,i->f);
}

int main ()
{
	read ();
	DF (1,1);
	out ();
	return 0;
}