Cod sursa(job #595795)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 14 iunie 2011 09:35:10
Problema Mesaj4 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 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[NMAX];

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)
	{
		int val = list[nod][i];
		if (!ap[val])
		{
			sol[++lung].first = nod;
			sol[lung].second = val;
			dfs (val);
		}
	}
}

int main ()
{
	int i, x, y;
	f >> n >> m;//scanf ("%d %d", &n, &m);
	for (i = 1; i <= m; i++) {
		f >> x >> y;//scanf ("%d %d", &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 = lung; i >= 1; --i)
		g << sol[i].second << ' ' << sol[i].first << '\n';
	for (i = 1; i <= lung; ++i)
		g << sol[i].first << ' ' << sol[i].second << '\n';
	
	g.close ();
	return 0;
}