Cod sursa(job #528203)

Utilizator mathboyDragos-Alin Rotaru mathboy Data 2 februarie 2011 13:20:02
Problema Mesaj4 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <cstdio>
#include <vector>
#include <bitset>

#define maxn 100010
using namespace std;


int n, m;
bitset <maxn> viz;
vector <int> G[maxn];
vector <pair <int, int> > sol;
void dfs (int node)
{
	viz[node] = 1;
	for (vector <int> :: iterator it = G[node].begin (); it != G[node].end (); it++)
		if (!viz[*it]) {
			
			sol.push_back (make_pair (node, *it));
			dfs (*it);
		}
}
int main ()
{

	freopen ("mesaj4.in", "r", stdin);
	freopen ("mesaj4.out", "w", stdout);
	
	int i, x, y;
	scanf ("%d %d\n", &n, &m);

	while (m--) {
	
		scanf ("%d%d\n", &x, &y);
		G[x].push_back (y);
		G[y].push_back (x);
	}

	dfs (1);
	for (i = 1; i <= n; i++)
		if (!viz[i]) {
			printf ("-1\n");
			return 0;
		}
	printf ("%d\n", 2 * (n - 1));
	for (i = sol.size () - 1; i >= 0; i--)
		printf ("%d %d\n", sol[i].second, sol[i].first);
	for (i = 0; i < sol.size (); i++)
		printf ("%d %d\n", sol[i].first, sol[i].second);

	return 0;
}