Pagini recente » Cod sursa (job #1920638) | Cod sursa (job #1605392) | Cod sursa (job #427381) | Cod sursa (job #1242697) | Cod sursa (job #2274950)
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <math.h>
#include <string.h>
using namespace std;
#define MAXN 100005
int n, m;
vector<int> g[MAXN];
char v[MAXN];
vector<pair<int, int>> sol;
void dfsAquire(int x) {
bool canVisit = false;
v[x] = 2;
for (auto y : g[x]) {
if (v[y] < 2) {
dfsAquire(y);
sol.push_back({ x,y });
}
}
}
int main() {
freopen("mesaj4.in", "r", stdin);
freopen("mesaj4.out", "w", stdout);
scanf("%d %d", &n, &m);
for (int i = 0; i < m; ++i) {
int x, y;
scanf("%d %d", &x, &y);
g[x].push_back(y);
g[y].push_back(x);
}
dfsAquire(1);
if (sol.size() < n - 1) {
printf("-1");
return 0;
}
printf("%d\n", (n - 1) * 2);
for (auto x : sol) {
printf("%d %d\n", x.first, x.second);
}
for (int i = sol.size() - 1; i >= 0; i--) {
printf("%d %d\n", sol[i].second, sol[i].first);
}
return 0;
}