Cod sursa(job #465472)

Utilizator pauldbPaul-Dan Baltescu pauldb Data 24 iunie 2010 13:15:02
Problema Mesaj4 Scor Ascuns
Compilator cpp Status done
Runda Marime 0.79 kb
#include <fstream>
#include <vector>

using namespace std;

const int MAXN = 2010;

int N, M;
char A[MAXN][MAXN];
int u[MAXN];
vector < pair <int, int> > Sol;

void DFS(int nod, int root) {
	u[nod] = 1;

	for (int i = 1; i <= N; ++i)
		if (!u[i] && A[nod][i]) {
			DFS(i, nod);
			Sol.push_back(make_pair(nod, i));
		}
}

int main() {

	ifstream fin("mesaj4.in");
	ofstream fout("mesaj4.out");

	fin >> N >> M;

	for (int i = 1; i <= M; ++i) {
		int x, y;

		fin >> x >> y;
		A[x][y] = A[y][x] = 1;
	}
	
	DFS(1, -1);

	if ((int) Sol.size() != N-1) {
		fout << -1 << endl;
	} else {
		fout << 2*N - 2 << '\n';
		for (int i = 0; i < N-1; ++i) 
			fout << Sol[i].second << " " << Sol[i].first << '\n';

		for (int i = N-2; i >= 0; --i)
			fout << Sol[i].first << " " << Sol[i].second << '\n';
	}

	return 0;
}