Cod sursa(job #970303)

Utilizator gramatovici_paulGramatovici Paul gramatovici_paul Data 6 iulie 2013 16:10:12
Problema Ciclu Eulerian Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#include <vector>
using namespace std;

int n,m;
bool ap[500100];
int x[500100],y[500100];
vector<int> A[100100];

ofstream out("ciclueuler.out");

inline void euler(int nod)
{
    for(vector<int>::iterator it=A[nod].begin();it!=A[nod].end();++it)
    {
        if(!ap[*it])
        {
            ap[*it]=true;
            euler(x[*it]+y[*it]-nod);
            out<<nod<<' ';
            return;
        }
    }

}

int main()
{
    ifstream in("ciclueuler.in");

    in>>n>>m;
    for(int i=1;i<=m;++i)
    {
        in>>x[i]>>y[i];
        A[x[i]].push_back(i);
        A[y[i]].push_back(i);
    }

    for(int i=1;i<=n;++i)
    {
        if(A[i].size()%2)
        {
            out<<"-1\n";
            return 0;
        }
    }

    euler(1);

    out<<'\n';

    out.close();
    return 0;
}