Cod sursa(job #2169687)

Utilizator rangal3Tudor Anastasiei rangal3 Data 14 martie 2018 16:40:21
Problema Ciclu Eulerian Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#include <vector>
#include <algorithm>
#define N 100003
#define oo 2000000000
#define pb push_back

using namespace std;

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

int d[N];
int n,m,x,y;
vector<int> g[N]; //nod, muchie vizitata


bool Euler()
{
    for(int i=1; i<=n; ++i)
        if(d[i] % 2) return false;
    return true;
}

inline void S(const int &nod)
{
    int nod2;
    for(int i = 0; i < g[nod].size(); ++i)
    {
        nod2 = g[nod][i];
        g[nod].erase(g[nod].begin() + i);
        g[nod2].erase(find(g[nod2].begin(), g[nod2].end(),nod));
        S(nod2);
        fout<<nod<<" ";
    }
}

int main()
{
    fin>>n>>m;
    while(m--)
    {
        fin>>x>>y;
        g[x].pb(y);
        g[y].pb(x);
        ++d[x];
        ++d[y];
    }

    if(Euler()) S(1);
        else fout<<"-1\n";


    return 0;
}