Pagini recente » Istoria paginii utilizator/marateodorescu11 | Istoria paginii utilizator/cami_coroian | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #715087)
Cod sursa(job #715087)
#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)
{
uz[nd]=1;
++ok;
for(vector<int>::iterator i=v[nd].begin();i<v[nd].end();++i)
if(!uz[*i])
{
sol.pb(mp(nd,*i));
DF (*i);
}
}
void out ()
{
freopen ("mesaj4.out","w",stdout);
if(ok!=n)
{
printf("-1");
return;
}
printf("%d\n",sol.size()<<1);
for(vector<pair<int,int> >::iterator i=sol.begin();i<sol.end();++i)
printf("%d %d\n",i->f,i->s);
for(vector<pair<int,int> >::iterator i=sol.end()-1;i>=sol.begin();--i)
printf("%d %d\n",i->s,i->f);
}
int main ()
{
read ();
DF (1);
out ();
return 0;
}