Pagini recente » Cod sursa (job #1092001) | Cod sursa (job #1658396) | Cod sursa (job #1690899) | Cod sursa (job #2674425) | Cod sursa (job #2359524)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("mesaj4.in");
ofstream g("mesaj4.out");
const int Nmax = 100000;
struct edge{
int x,y;
};
edge muchie;
vector <edge> sol;
vector <int> v[Nmax + 5];
int viz[Nmax + 5], n, m, nr;
void read()
{
f >> n >> m;
for(int i = 1, a, b; i <= m; i++)
{
f >> a >> b;
v[a].push_back(b);
v[b].push_back(a);
}
}
void dfs(int x)
{
viz[x] = 1;
for (auto y:v[x])
{
if(viz[y] == 1) continue;
dfs(y);
++nr;
muchie.x = y;
muchie.y = x;
sol.push_back(muchie);
}
}
int main()
{
read();
dfs(1);
if(nr != (n-1))
{
g << -1;
return 0;
}
g << 2*(n-1) << "\n";
for (int i = 0; i < sol.size(); i++)
g << sol[i].x << " " << sol[i].y << '\n';
for (int i = sol.size() - 1; i >= 0; i--)
g << sol[i].y << " " << sol[i].x << '\n';
return 0;
}