Pagini recente » Borderou de evaluare (job #2601876) | Borderou de evaluare (job #8889) | Cod sursa (job #1202084)
#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) {
//cout << 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 + 1 != n) g << -1 << '\n';
else {
g << 2 * n - 2 << '\n';
for (int i = n - 2; i >= 0; i--) g << sol[i].second << ' ' << sol[i].first << '\n';
for (int i = 0; i < n - 1; i++) g << sol[i].first << ' ' << sol[i].second << '\n';
}
}
int main () {
citeste ();
viz[1] = 1;
DFS (1);
scrie ();
}