Cod sursa(job #508412)

Utilizator cristiprgPrigoana Cristian cristiprg Data 8 decembrie 2010 10:14:48
Problema Mesaj4 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <cstdio>
#include <vector>
#include <bitset>
using namespace std;
#define DIM 100004
#define pb push_back
#define IT vector<int>::iterator
#define ITT vector<pair<int, int> >::iterator
#define mp make_pair

vector<int>G[DIM];
vector<pair<int, int> >A;
bitset<DIM>v(0);
int n,m;

void citire()
{
	FILE *f = fopen("mesaj4.in", "r");
	fscanf(f, "%d%d", &n, &m);
	for (int i = 1, x, y; i <= m; ++i)
		fscanf(f, "%d%d", &x, &y), G[x].pb(y), G[y].pb(x);
	fclose(f);
}

void DFS(int i)
{
	v[i] = 1;
	for (IT it = G[i].begin(); it != G[i].end(); ++it)
		if (!v[*it])
			A.pb(mp(i, *it)), DFS(*it);
}

void out()
{
	FILE *f = fopen("mesaj4.out", "w");
	if ((int)A.size() != (n-1))
		fprintf(f, "-1\n");
	else
	{
		fprintf(f, "%d\n", 2*(n-1));
		for(ITT it = A.end()-1; it >= A.begin(); --it)
			fprintf(f, "%d %d\n", it->second, it->first);
			
		for(ITT it = A.begin(); it != A.end(); ++it)
			fprintf(f, "%d %d\n", it->first, it->second);
			
	}
}

int main()
{
	citire();
	DFS(1);
	out();
	return 0;	
}