Cod sursa(job #465839)

Utilizator radu_voroneanuVoroneanu Radu Stefan radu_voroneanu Data 25 iunie 2010 13:31:08
Problema Mesaj4 Scor 100
Compilator cpp Status done
Runda Stelele Informaticii 2010, gimnaziu si clasa a IX-a, Ziua 1 Marime 0.97 kb
#include <stdio.h>
#include <vector>
#define MAXN 100005

using namespace std;

vector<int> G[MAXN];
int ok[MAXN], c[MAXN], t[MAXN];
int i,N,M,x,y,nr,nod;

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);
        G[x].push_back(y);
        G[y].push_back(x);
    }

    c[1] = 1;  nr = 1; ok[1] = true;
    for (i=1; i<=nr; ++i){
        nod = c[i];
        vector<int>::iterator it;
        for (it=G[nod].begin(); it!=G[nod].end(); ++it)
            if (!ok[*it]){
                c[++nr] = *it;
                ok[*it] = true;
                t[nr] = i;
            }
    }

    if (nr != N) {
        printf("-1\n");
        return 0;
    }

    printf("%d\n", N*2-2);
    for (i=N; i>1; --i)
        printf("%d %d\n", c[i], c[t[i]]);
    for (i=2; i<=N; ++i)
        printf("%d %d\n", c[t[i]], c[i]);

    return 0;
}