Pagini recente » Cod sursa (job #1585013) | Cod sursa (job #2621451) | Cod sursa (job #1107015) | Cod sursa (job #1606949) | Cod sursa (job #467461)
Cod sursa(job #467461)
#include<fstream>
using namespace std;
struct nod{
int info;
nod *next;
};
struct af{
int fiu,tata;};
af c[100003];
int n,m,vizitat[100003],t[100003];
nod *g[100004];
void dfs1(int k);
void adauga(int a,int b);
ofstream fout("mesaj4.out");
int nr;
int main()
{
ifstream fin("mesaj4.in");
fin>>n>>m;
int i;
for(i=1;i<=m;i++)
{
int x,y;
fin>>x>>y;
adauga(x,y);
adauga(y,x);
}
int pp=0;
dfs1(1);
for(i=1;i<=n &&pp==0;i++)
if(vizitat[i]==0)
pp=1;
if(pp==1)
fout<<"-1";
else
{
fout<<2*(n-1)<<endl;
for(i=1;i<=nr;i++)
fout<<c[i].tata<<" "<<c[i].fiu<<endl;
for(i=nr;i>=1;i--)
fout<<c[i].fiu<<" "<<c[i].tata<<endl;
}
return 0;
}
void dfs1(int k)
{
vizitat[k]=1;
for(nod *p=g[k];p;p=p->next)
if(vizitat[p->info]==0)
t[p->info]=k,dfs1(p->info);
if(k!=1)
c[++nr].tata=k,c[nr].fiu=t[k];
}
void adauga(int a,int b)
{
nod *p=new nod;
p->info=b;
p->next=g[a];
g[a]=p;
}