Cod sursa(job #529244)

Utilizator katakunaCazacu Alexandru katakuna Data 4 februarie 2011 16:21:37
Problema Mesaj4 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <cstdio>
#include <vector>
using namespace std;

#define Nmax 100010

int n, m, N;
int viz[Nmax], A[Nmax], B[Nmax];
vector <int> V[Nmax];

void citire () {
	
	int i, x, y;
	scanf ("%d %d", &n, &m);
	for (i = 1; i <= m; i++) {
		scanf ("%d %d", &x, &y);
		V[x].push_back (y);
		V[y].push_back (x);
	}
}

void dfs (int nod) {
	
	viz[nod] = 1;
	for (vector <int>::iterator it = V[nod].begin (); it != V[nod].end (); it++)
		if (!viz[*it]) {
            A[++N] = nod; B[N] = *it;
			dfs (*it);
		}
}

int main () {

	freopen ("mesaj4.in", "r", stdin);
	freopen ("mesaj4.out", "w", stdout );

	citire ();
	dfs (1);

	int i;
	for (i = 1; i <= n; i++)
		if (!viz[i]) {
			printf ("-1");
			return 0;
		}

	printf ("%d\n", 2 * (n-1));
	for (i = N; i >= 1; i--)
		printf ("%d %d\n", B[i], A[i]);
	for (i = 1; i <= N; i++)
		printf ("%d %d\n", A[i], B[i]);
	
	return 0;
}