Cod sursa(job #715088)

Utilizator paul_gabryelPaul Buda paul_gabryel Data 16 martie 2012 17:08:33
Problema Mesaj4 Scor 0
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)
{
	uz[nd]=1;
	++ok;
	for(vector<int>::iterator i=v[nd].begin();i<v[nd].end();++i)
		if(!uz[*i])
		{
			DF (*i);
			sol.pb(mp(nd,*i));
		}
}

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

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