Cod sursa(job #552601)

Utilizator laurionLaurentiu Ion laurion Data 12 martie 2011 16:53:53
Problema Mesaj4 Scor 100
Compilator cpp Status done
Runda steleinf2010juniori Marime 0.9 kb
#include <stdio.h>
#include <vector>

using namespace std;

#define maxn 100010

long n, m, i, j, k, a, b, f[maxn], sa[maxn], sb[maxn];
vector<long> v[maxn];

void df(long nod)
{
    if(f[nod])
        return;
    f[nod]=1;
    for(vector<long> :: iterator it=v[nod].begin(); it!=v[nod].end(); it++)
        if(f[(*it)]==0)
        {
            df(*it);
            sa[++sa[0]]=(*it);
            sb[++sb[0]]=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", &a, &b);
        v[a].push_back(b);
        v[b].push_back(a);
    }
    df(1);
    if(sa[0]<n-1)
    {
        printf("-1\n");
        return 0;
    }
    printf("%d\n", n*2-2);
    for(i=1; i<n; ++i)
        printf("%d %d\n", sa[i], sb[i]);
    for(i=n-1; i; --i)
        printf("%d %d\n", sb[i], sa[i]);
    return 0;
}