Pagini recente » Cod sursa (job #2376909) | Cod sursa (job #2706250) | Cod sursa (job #1669270) | Cod sursa (job #1973709) | Cod sursa (job #470811)
Cod sursa(job #470811)
#include<algorithm>
using namespace std;
#include<vector>
#include<queue>
#include<bitset>
#define pb push_back
#define mp make_pair
#define fs first
#define sc second
#define DIM 100005
vector <int> lst[DIM];
vector <pair<int,int> > sol;
bitset <DIM> v;
int n,m;
void bf ()
{
queue <int> q;
int nr,i;
q.push (n);
v[n]=1;
while(!q.empty ())
{
nr=q.front ();
for(i=0;i<(int)lst[nr].size ();++i)
if(!v[lst[nr][i]])
{
v[lst[nr][i]]=1;
sol.pb (mp(nr,lst[nr][i]));
q.push (lst[nr][i]);
}
q.pop ();
}
}
bool check ()
{
int i;
for(i=1;i<=n;++i)
if(!v[i])
return 1;
return 0;
}
int main ()
{
freopen("mesaj4.in","r",stdin);
freopen("mesaj4.out","w",stdout);
int i,nr1,nr2;
scanf("%d%d",&n,&m);
for(i=1;i<=m;++i)
{
scanf("%d%d",&nr1,&nr2);
lst[nr1].pb (nr2);
lst[nr2].pb (nr1);
}
bf ();
if(check ())
{
printf("-1");
return 0;
}
printf("%d\n",2*(int)sol.size ());
for(i=(int)sol.size ()-1;i>=0;--i)
printf("%d %d\n",sol[i].sc,sol[i].fs);
for(i=0;i<(int)sol.size ();++i)
printf("%d %d\n",sol[i].fs,sol[i].sc);
return 0;
}