Pagini recente » Cod sursa (job #1952651) | Cod sursa (job #2255187) | Cod sursa (job #1587896) | Cod sursa (job #1629908) | Cod sursa (job #2789791)
#include <fstream>
#include <vector>
using namespace std;
const int N = 1e5 + 5;
vector<int> gr[N];
vector<pair<int, int>> ans;
bool viz1[N], viz2[N];
void dfs1(int nod, int tata) {
viz1[nod] = true;
for (auto vec : gr[nod])
if (!viz1[vec])
dfs1(vec, nod);
if (tata != 0)
ans.emplace_back(nod, tata);
}
void dfs2(int nod) {
viz2[nod] = true;
for (auto vec : gr[nod])
if (!viz2[vec]) {
ans.emplace_back(nod, vec);
dfs2(vec);
}
}
int main() {
ifstream cin("mesaj4.in");
ofstream cout("mesaj4.out");
int n, m;
cin >> n >> m;
while (m--) {
int x, y;
cin >> x >> y;
gr[x].push_back(y);
gr[y].push_back(x);
}
cin.close();
dfs1(1, 0);
for (int i = 1; i <= n; ++i)
if (!viz1[i]) {
cout << "-1\n";
cout.close();
return 0;
}
dfs2(1);
cout << ans.size() << "\n";
for (auto i : ans)
cout << i.first << " " << i.second << "\n";
cout.close();
return 0;
}