Pagini recente » Cod sursa (job #1874559) | Cod sursa (job #406711) | Cod sursa (job #1024837) | Cod sursa (job #2752576) | Cod sursa (job #1426068)
#include <cstdio>
#include <algorithm>
#include <vector>
#define x first
#define y second
#define NMAX 1000007
using namespace std;
int n, m;
int Viz[NMAX];
vector < int > v[NMAX];
vector < pair < int, int > > Ans;
void dfs(int Nod){
Viz[Nod] = 1;
for(int i = 0; i < v[Nod].size(); ++i)
if(Viz[v[Nod][i]] == 0){
dfs(v[Nod][i]);
Ans.push_back(make_pair(v[Nod][i], Nod));
}
}
int main(){
freopen("mesaj4.in", "r", stdin);
freopen("mesaj4.out", "w", stdout);
scanf("%d %d", &n, &m);
for(int i = 1; i <= m; ++i){
int A, B;
scanf("%d %d", &A, &B);
v[A].push_back(B);
v[B].push_back(A);
}
dfs(1);
if(Ans.size() < n - 1){
printf("-1");
return 0;
}
printf("%d\n", 2 * Ans.size());
for(int i = 0; i < Ans.size(); ++i)
printf("%d %d\n", Ans[i].x, Ans[i].y);
for(int i = Ans.size() - 1; i >= 0; --i)
printf("%d %d\n", Ans[i].y, Ans[i].x);
return 0;
}