Cod sursa(job #1300995)

Utilizator gapdanPopescu George gapdan Data 25 decembrie 2014 14:04:30
Problema Mesaj4 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include<cstdio>
#include<vector>
#define NMAX 100005
using namespace std;
int n,m,i,x,y;
int viz[NMAX];
vector<int>v[NMAX];
struct muchie
{
    int l,r;
};
vector<muchie>sol;
muchie pp(int x,int y)
{
    muchie X;X.l=x;X.r=y;
    return X;
}
void DFS(int nod)
{
    viz[nod]=1;
    vector<int>::iterator it;
    for (it=v[nod].begin();it!=v[nod].end();++it)
    {
        if (viz[*it]==0)
        {
            sol.push_back(pp(nod,*it));
            DFS(*it);
        }
    }
}
void afis(vector<muchie>::iterator it)
{
    if (it!=sol.end())
    {
        muchie X=*it;
        printf("%d %d\n",X.l,X.r);
        ++it;
        afis(it);
        printf("%d %d\n",X.r,X.l);
    }
}
int main()
{
    freopen("mesaj4.in","r",stdin);
    freopen("mesaj4.out","w",stdout);
    scanf("%d%d",&n,&m);
    for (i=1;i<=m;++i)
    {
        scanf("%d%d",&x,&y);
        v[x].push_back(y);
        v[y].push_back(x);
    }
    DFS(1);
    if (sol.size()!=n-1) {printf("-1\n");return 0;}
    else
    {
        printf("%d\n",2*(n-1));
        vector<muchie>::iterator it;
        it=sol.begin();
        afis(it);
    }
    return 0;
}