Pagini recente » Cod sursa (job #1911893) | Cod sursa (job #1196207) | Cod sursa (job #491715) | Cod sursa (job #1253727) | Cod sursa (job #478392)
Cod sursa(job #478392)
#include <cstdio>
#include <vector>
const int maxN = 100100;
using namespace std;
int N, M;
vector <int> G[maxN];
vector <pair <int, int> > sol;
int viz[maxN];
void df1(int nod) {
int i;
if (viz[nod])
return;
viz[nod] = 1;
for (i = 0; i < G[nod].size(); i++) {
if (!viz[G[nod][i]]) {
df1(G[nod][i]);
sol.push_back(make_pair(G[nod][i], nod));
}
}
}
void df2(int nod) {
int i;
if (viz[nod])
return;
viz[nod] = 1;
for (i = 0; i < G[nod].size(); i++)
if (!viz[G[nod][i]]) {
sol.push_back(make_pair(nod, G[nod][i]));
df2(G[nod][i]);
}
}
int main() {
int i, a, b;
freopen("mesaj4.in", "r", stdin);
freopen("mesaj4.out", "w", stdout);
scanf("%d%d", &N, &M);
for (i = 1; i <= M; i++) {
scanf("%d%d", &a, &b);
G[a].push_back(b);
G[b].push_back(a);
}
df1(1);
for (i = 1; i <= N; i++) {
if (viz[i] == 0) {
printf("-1\n");
return 0;
}
viz[i] = 0;
}
df2(1);
printf("%d\n", 2 * N - 2);
for (i = 0; i < sol.size(); i++)
printf("%d %d\n", sol[i].first, sol[i].second);
return 0;
}