Cod sursa(job #1199890)

Utilizator xtreme77Patrick Sava xtreme77 Data 21 iunie 2014 00:26:03
Problema Mesaj4 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <cstdio>
#include <vector>

#define pb push_back
#define rint register int
const char IN[14]  = "mesaj4.in";
const char OUT[14] = "mesaj4.out";
const int MAX = 100100;

using namespace std;

struct retin{
    int a,b;
};
vector <int> gr[MAX];
int n,fr[MAX],nr;
retin q[MAX];
void dfs(int nod);
int main()
{
    int m;
    freopen(IN,"r",stdin);
    freopen(OUT,"w",stdout);
    scanf("%d%d",&n,&m);
    while(m--){
        int x,y;
        scanf("%d%d",&x,&y);
        gr[x].pb(y);
        gr[y].pb(x);
    }
    dfs(1);
    if(nr!=n-1){
        printf("-1\n");
        return 0;
    }
    printf("%d\n",2*n-2);
    for(rint i=n-1;i>=1;--i)printf("%d %d\n",q[i].b,q[i].a);
    for(rint i=1;i<n;++i)printf("%d %d\n",q[i].a,q[i].b);
    return 0;
}
void dfs(int nod){
    fr[nod]=1;
    for(rint i=0;i<(int)gr[nod].size();++i){
        if(!fr[gr[nod][i]]){
            ++nr;
            q[nr].a=nod;
            q[nr].b=gr[nod][i];
            dfs(gr[nod][i]);
        }
    }
}