Cod sursa(job #465699)

Utilizator antoanelaAntoanela Siminiuc antoanela Data 25 iunie 2010 12:10:29
Problema Mesaj4 Scor 100
Compilator cpp Status done
Runda Stelele Informaticii 2010, gimnaziu si clasa a IX-a, Ziua 1 Marime 0.93 kb
#include <cstdio>
#include <vector>
using namespace std;
#define nmax 200010

int n, m, a[nmax], b[nmax], h, d[nmax];
vector <int> v[nmax];

void solve(int nod)
{
    int i;
    for (i=0; i<v[nod].size(); i++)
        if (!d[v[nod][i]])
        {
            h++;
            a[h]=nod;
            b[h]=v[nod][i];
            d[v[nod][i]]=1;
            solve(v[nod][i]);
        }
}

int main()
{
    freopen("mesaj4.in","r",stdin);
    freopen("mesaj4.out","w",stdout);
    scanf("%d %d",&n,&m);
    int x, y, i;
    while (m--)
    {
        scanf("%d %d",&x,&y);
        v[x].push_back(y);
        v[y].push_back(x);
    }
    d[1]=1;
    solve(1);
    int ok=1;
    for (i=1; i<=n; i++)
        if (!d[i]) ok=0;
    if (!ok) printf("-1\n"); else
    {
        printf("%d\n",2*h);
        for (i=h; i>0; i--) printf("%d %d\n",b[i],a[i]);
        for (i=1; i<=h; i++) printf("%d %d\n",a[i],b[i]);
    }
}