Cod sursa(job #2540445)

Utilizator giotoPopescu Ioan gioto Data 7 februarie 2020 10:15:28
Problema Mesaj4 Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <bits/stdc++.h>
using namespace std;

int n, m;
int TT[100005];
bool viz[100005];

vector <int> v[100005];
vector <pair <int, int> > aux;

vector <int> parc;
void dfs(int nod){
	viz[nod] = 1;
	for(auto it : v[nod]){
		if(viz[it]) continue ;
		TT[it] = nod;
		dfs(it);
	}
	parc.push_back(nod);
}

int main(){
	freopen("mesaj4.in", "r", stdin);
	freopen("mesaj4.out", "w", stdout);
	
	scanf("%d%d", &n, &m);
	int x, y;
	for(int i = 1; i <= m ; ++i){
		scanf("%d%d", &x, &y);
		v[x].push_back(y);
		v[y].push_back(x);
	}
	
	dfs(1);
	
	for(int i = 1; i <= n ; ++i){
		if(!viz[i]){
			printf("-1");
			return 0;
		}
	}
	
	printf("%d\n", 2 * n - 2);
	parc.pop_back();
	for(auto it : parc)
		printf("%d %d\n", it, TT[it]);
	
	for(int i = parc.size() - 1; i >= 0 ; --i)
		printf("%d %d\n", TT[parc[i]], parc[i]);
	
	return 0;
}