Pagini recente » Cod sursa (job #2752599) | Cod sursa (job #1032562) | Cod sursa (job #2295494) | Cod sursa (job #1611494) | Cod sursa (job #529244)
Cod sursa(job #529244)
#include <cstdio>
#include <vector>
using namespace std;
#define Nmax 100010
int n, m, N;
int viz[Nmax], A[Nmax], B[Nmax];
vector <int> V[Nmax];
void citire () {
int i, x, y;
scanf ("%d %d", &n, &m);
for (i = 1; i <= m; i++) {
scanf ("%d %d", &x, &y);
V[x].push_back (y);
V[y].push_back (x);
}
}
void dfs (int nod) {
viz[nod] = 1;
for (vector <int>::iterator it = V[nod].begin (); it != V[nod].end (); it++)
if (!viz[*it]) {
A[++N] = nod; B[N] = *it;
dfs (*it);
}
}
int main () {
freopen ("mesaj4.in", "r", stdin);
freopen ("mesaj4.out", "w", stdout );
citire ();
dfs (1);
int i;
for (i = 1; i <= n; i++)
if (!viz[i]) {
printf ("-1");
return 0;
}
printf ("%d\n", 2 * (n-1));
for (i = N; i >= 1; i--)
printf ("%d %d\n", B[i], A[i]);
for (i = 1; i <= N; i++)
printf ("%d %d\n", A[i], B[i]);
return 0;
}