Cod sursa(job #467464)

Utilizator bora_marianBora marian bora_marian Data 28 iunie 2010 23:51:49
Problema Mesaj4 Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<fstream>
using namespace std;
struct nod{
	int info;
	nod *next;
};
struct af{
   int fiu,tata;};
 af c[100003];  
int n,m,vizitat[100003],t[100003];
nod *g[100004];
void dfs1(int k);
void adauga(int a,int b);
ofstream fout("mesaj4.out");
int nr;
int main()
{
	ifstream fin("mesaj4.in");
	fin>>n>>m;
	int i;
	for(i=1;i<=m;i++)
	{
		int x,y;
		fin>>x>>y;
		adauga(x,y);
		adauga(y,x);
	}
	dfs1(1);
	if(nr!=n-1)
		fout<<"-1";
	else
	{	
		fout<<2*(n-1)<<endl;
	    for(i=1;i<=nr;i++)
			fout<<c[i].tata<<" "<<c[i].fiu<<endl;
		for(i=nr;i>=1;i--)
			fout<<c[i].fiu<<" "<<c[i].tata<<endl;
	}
	return 0;
}
void dfs1(int k)
{
	vizitat[k]=1;	
	for(nod *p=g[k];p;p=p->next)
		if(vizitat[p->info]==0)
		   t[p->info]=k,dfs1(p->info);
	if(k!=1)
		c[++nr].tata=k,c[nr].fiu=t[k];
}
void adauga(int a,int b)
{
	nod *p=new nod;
	p->info=b;
	p->next=g[a];
	g[a]=p;
}