Cod sursa(job #1636959)

Utilizator iordache.bogdanIordache Ioan-Bogdan iordache.bogdan Data 7 martie 2016 13:48:51
Problema Mesaj4 Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <fstream>
#include <cstring>
#include <algorithm>
#include <vector>

using namespace std;

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

vector<int> graph[100005];
vector< pair<int, int> > edges;

bool vis[100005];

void dfs(int node) {

	vis[node] = true;

	for (vector<int>::iterator adj = graph[node].begin(); adj != graph[node].end(); ++adj) {

		if (vis[*adj])
			continue;

		dfs(*adj);
		edges.push_back(make_pair(node, *adj));

	}

}

int main() {

	int n, m;
	fin >> n >> m;

	for (int i = 1; i <= m; ++i) {

		int x, y;
		fin >> x >> y;

		graph[x].push_back(y);
		graph[y].push_back(x);

	}

	dfs(1);

	if (edges.size() != n - 1) {
		fout << "-1\n";
		return 0;
	}

	fout << 2 * edges.size() << '\n';

	for (unsigned int i = 0; i < edges.size(); ++i)
		fout << edges[i].second << ' ' << edges[i].first << '\n';

	for (int i = edges.size() - 1; i >= 0; --i)
		fout << edges[i].first << ' ' << edges[i].second << '\n';

	return 0;

}

//Trust me, I'm the Doctor!