Pagini recente » Cod sursa (job #1312665) | Cod sursa (job #598986) | Cod sursa (job #2326392) | Cod sursa (job #1667561) | Cod sursa (job #2808552)
#include <bits/stdc++.h>
using namespace std;
vector<int> v[100005];
vector<pair<int,int> > ans;
bool viz1[100005],viz2[100005];
int n,m;
void dfs1(int nod,int tata)
{
viz1[nod]=true;
for(auto fiu:v[nod])
{
if(!viz1[fiu])
dfs1(fiu,nod);
}
if(tata)
ans.emplace_back(nod,tata);
}
void dfs2(int nod)
{
viz2[nod]=1;
for(auto fiu:v[nod])
{
if(!viz2[fiu])
{
ans.emplace_back(nod,fiu);
dfs2(fiu);
}
}
}
int main()
{
ifstream cin("mesaj4.in");
ofstream cout("mesaj4.out");
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int x,y;
cin>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
dfs1(1,0);
for(int i=1;i<=n;i++)
{
if(!viz1[i])
{
cout<<"-1";
return 0;
}
}
dfs2(1);
cout<<ans.size()<<"\n";
for(auto nod:ans)
cout<<nod.first<<" "<<nod.second<<"\n";
return 0;
}