Cod sursa(job #2540437)

Utilizator giotoPopescu Ioan gioto Data 7 februarie 2020 10:09:28
Problema Mesaj4 Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 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);
	for(auto it : parc){
		if(it == 1) break ;
		printf("%d %d\n", it, TT[it]);
		aux.push_back({TT[it], it});
	}
	
	for(int i = aux.size() - 1; i >= 0 ; --i){
		printf("%d %d\n", aux[i].first, aux[i].second);
	}
	
	return 0;
}