Pagini recente » Cod sursa (job #2289758) | Cod sursa (job #1647929) | Cod sursa (job #359473) | Cod sursa (job #856941) | Cod sursa (job #1202083)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f ("mesaj4.in");
ofstream g ("mesaj4.out");
int n, m;
vector <int> v[100001];
vector < pair <int, int> > sol;
char viz[100001];
void citeste () {
f >> n >> m;
int a, b;
for (int i = 1; i <= m; i++) {
f >> a >> b;
v[a].push_back(b);
v[b].push_back(a);
}
}
void DFS (int x) {
int l = v[x].size ();
for (int i = 0; i < l; i++) {
if (viz[v[x][i]] == 0) {
sol.push_back(make_pair(x, v[x][i]));
viz[v[x][i]] = 1;
DFS(v[x][i]);
}
}
}
void scrie () {
int l = sol.size ();
if (l != n) g << -1 << '\n';
else {
g << 2 * l - 2 << '\n';
for (int i = l - 2; i >= 0; i--) g << sol[i].second << ' ' << sol[i].first << '\n';
for (int i = 0; i < l - 1; i++) g << sol[i].first << ' ' << sol[i].second << '\n';
}
}
int main () {
citeste ();
DFS (1);
scrie ();
}