Cod sursa(job #595713)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 13 iunie 2011 18:29:18
Problema Mesaj4 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
# include <fstream>
# include <vector>
# define NMAX 100001
using namespace std;

vector <int> list[NMAX];
int n, m, x, y, i, ap[NMAX], lung;
pair <int, int> sol[200002];

ifstream f ("mesaj4.in");
ofstream g ("mesaj4.out");

void dfs (int nod)
{
	int siz = list[nod].size ();
	ap[nod] = 1;
	for (int i = 0; i < siz; ++i)
		if (!ap[list[nod][i]])
		{
			sol[++lung].first = nod;
			sol[lung].second = list[nod][i];
			dfs (list[nod][i]);
		}
}
int main ()
{
	f >> n >> m;
	for (i = 1; i <= m; ++i)
	{
		f >> x >> y;
		list[x].push_back (y);
		list[y].push_back (x);
	}
	
	dfs (1);
	
	for (i = 1; i <= n; ++i)
		if (!ap[i])
		{
			g << "-1\n";
			return 0;
		}
	
	g << (n << 1) - 2 << '\n';
	for (i = 1; i <= lung; ++i)
		g << sol[i].first << ' ' << sol[i].second << '\n';
	for (i = lung; i >= 1; --i)
		g << sol[i].second << ' ' << sol[i].first << '\n';
	g.close ();
	return 0;
}