Cod sursa(job #755384)

Utilizator gramatovici_paulGramatovici Paul gramatovici_paul Data 5 iunie 2012 16:15:49
Problema Ciclu Eulerian Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <cstdlib>

using namespace std;

ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");

int n,m,x[550000],y[550000],lung,s[510000];

vector <int> b[110000];
bool fol[510000];

void euler(int nod)
{
    int i;
    for(i=0;i<b[nod].size();++i)
    {
        if(fol[b[nod][i]]==false)
        {
            fol[b[nod][i]]=true;
            euler(x[b[nod][i]]+y[b[nod][i]]-nod);
        }
    }
    s[++lung]=nod;
}


int main()
{
    int i;
    in>>n>>m;
    for(i=1;i<=m;++i)
    {
        in>>x[i]>>y[i];
        b[x[i]].push_back(i);
        b[y[i]].push_back(i);
    }
    for(i=1;i<=n;++i)
    {
        if(b[i].size()%2==1)
        {
            out<<"-1";
            return 0;
        }
    }
    euler(1);
    for(i=1;i<=lung;++i)
    {
        out<<s[i]<<" ";
    }
    return 0;
}