Pagini recente » Cod sursa (job #1407086) | Borderou de evaluare (job #2040503) | Cod sursa (job #604378) | Cod sursa (job #902659) | Cod sursa (job #3194756)
#include <fstream>
#include <vector>
#include <algorithm>
#define sz 100000
using namespace std;
ifstream fin("mesaj4.in");
ofstream fout("mesaj4.out");
int n,m;
vector <int> v[sz + 5];
vector <pair<int,int> > sol;
bool viz[sz + 5];
int nrc;
void dfs(int nod)
{
viz[nod]=true;
for(auto& i : v[nod])
if(!viz[i]){
dfs(i);
sol.push_back({i,nod});
}
}
int main()
{
fin>>n>>m;
for(int i=1;i<=m;i++)
{
int x,y;
fin>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
for(int i=1;i<=n;i++)
if(!viz[i])
nrc++,dfs(i);
if(nrc!=1)
{
fout<<-1;
return 0;
}
fout<<2*n-2<<'\n';
for(auto& i : sol)
fout<<i.first<<' '<<i.second<<'\n';
for(auto it = sol.rbegin();it!=sol.rend();it++)
fout<<it->second<<' '<<it->first<<'\n';
}