Pagini recente » Cod sursa (job #3229093) | Cod sursa (job #286387) | Cod sursa (job #2663733) | Cod sursa (job #2033106) | Cod sursa (job #475170)
Cod sursa(job #475170)
#include <cstdio>
#include <vector>
using namespace std;
#define NMAX 100050
int Q[NMAX], viz[NMAX], L[NMAX], R[NMAX], n, m, k;
vector <int> G[NMAX];
void read ();
int bfs (int);
void print_sol ();
int main () {
freopen ("mesaj4.in", "r", stdin);
freopen ("mesaj4.out", "w", stdout);
read ();
if (bfs (1))
print_sol ();
else
printf ("-1");
return 0;
}
void read () {
int i, x, y;
scanf ("%d %d", &n, &m);
for (i = 1; i <= m; i++) {
scanf ("%d %d", &x, &y);
G[x].push_back(y), G[y].push_back(x);
}
}
int bfs (int x) {
int p, u, node, son, i;
Q[1] = x, viz[x] = 1;
for (p = u = 1; p <= u; p++) {
node = Q[p];
for (i = 0; i < (int) G[node].size(); i++) {
son = G[node][i];
if (!viz[son]) {
Q[++u] = son, viz[son] = 1;
k++, L[k] = node, R[k] = son;
}
}
}
if (k == n - 1)
return 1;
return 0;
}
void print_sol () {
int i;
printf ("%d\n", k * 2);
for (i = k; i > 0; i--)
printf ("%d %d\n", R[i], L[i]);
for (i = 1; i <= k; i++)
printf ("%d %d\n", L[i], R[i]);
}