Pagini recente » Cod sursa (job #2609160) | Cod sursa (job #3271810) | Cod sursa (job #517789) | Borderou de evaluare (job #1080414) | Cod sursa (job #3166903)
#include <iostream>
#include <vector>
using namespace std;
vector <int> g[100005];
vector <pair<int, int>> parcurgere;
bool vizited[100005];
void dfs (int nod)
{
vizited[nod]=1;
for (int i=0; i<g[nod].size(); i++) {
int vecin=g[nod][i];
if (!vizited[vecin]) {
parcurgere.push_back({vecin, nod});
dfs(vecin);
}
}
}
int main() {
int n, m, x, y;
freopen("mesaj4.in", "r", stdin);
freopen("mesaj4.out","w", stdout);
cin>>n>>m;
for (int i=1; i<=m; i++) {
cin>>x>>y;
g[x].push_back(y);
g[y].push_back(x);
}
dfs(1);
bool conex=true;
for (int i=1; i<=n; i++) {
if (!vizited[i]) {
conex=false;
break;
}
}
if (conex) {
cout<<2*(n-1)<<'\n';
for (int i=parcurgere.size()-1; i>=0; i--)
cout<<parcurgere[i].first<<' '<<parcurgere[i].second<<'\n';
for (int i=0; i<parcurgere.size(); i++)
cout<<parcurgere[i].second<<' '<<parcurgere[i].first<<'\n';
}
else cout<<-1;
return 0;
}