Pagini recente » Cod sursa (job #641074) | Cod sursa (job #1997311) | Cod sursa (job #339676) | Cod sursa (job #1434704) | Cod sursa (job #1868229)
#include <iostream>
#include <cstdio>
#include <vector>
#include <bitset>
using namespace std;
#define DIM 100005
vector <vector <int> > G;
vector <pair <int, int> > ans;
bitset <DIM> freq;
int N, M;
void DF(int);
int main() {
freopen("mesaj4.in","r",stdin);
freopen("mesaj4.out","w",stdout);
scanf("%d %d\n", &N, &M);
G.resize(N + 1);
int x, y;
for(int i = 1; i <= M; ++i) {
scanf("%d %d\n", &x, &y);
G[x].push_back(y);
G[y].push_back(x);
}
DF(1);
if(ans.size() == (unsigned int) N - 1) {
cout << 2 * (N - 1) << '\n';
vector <pair <int, int> >::reverse_iterator it = ans.rbegin();
for(; it != ans.rend(); ++it) {
cout << (*it).second << ' ' << (*it).first << '\n';
}
vector <pair <int, int> >::iterator itt = ans.begin();
for(; itt != ans.end(); ++itt) {
cout << (*itt).first << ' ' << (*itt).second << '\n';
}
}
else {
cout << -1 << '\n';
}
return 0;
}
void DF(int node) {
freq[node] = 1;
for(unsigned int z = 0; z < G[node].size(); ++z) {
if(!freq[G[node][z]]) {
ans.push_back(make_pair(node, G[node][z]));
DF(G[node][z]);
}
}
}