Pagini recente » Cod sursa (job #1794731) | Rating Sumurduc Alexandru (sumithesum) | Cod sursa (job #463550) | Cod sursa (job #1452221) | Cod sursa (job #715090)
Cod sursa(job #715090)
#include <vector>
#include <fstream>
#include <cstdio>
using namespace std;
#define N 100001
#define pb push_back
#define mp make_pair
#define f first
#define s second
vector<int> v[N];
vector<pair<int,int> > sol;
bool uz[N];
int n,m,ok;
void read ()
{
ifstream in ("mesaj4.in");
in>>n>>m;
for(int i,j;m;--m)
{
in>>i>>j;
v[i].pb(j);
v[j].pb(i);
}
}
void DF (int nd,int f)
{
if(uz[nd])
return;
uz[nd]=1;
++ok;
sol.pb(mp(nd,f));
for(vector<int>::iterator i=v[nd].begin();i<v[nd].end();++i)
DF (*i,nd);
}
void out ()
{
freopen ("mesaj4.out","w",stdout);
if(ok!=n)
{
printf("-1");
return;
}
printf("%d\n",(n-1)<<1);
for(vector<pair<int,int> >::iterator i=sol.end()-1;i>sol.begin();--i)
printf("%d %d\n",i->f,i->s);
for(vector<pair<int,int> >::iterator i=sol.begin()+1;i<sol.end();++i)
printf("%d %d\n",i->s,i->f);
}
int main ()
{
read ();
DF (1,1);
out ();
return 0;
}