Cod sursa(job #2631090)

Utilizator StasBrega Stanislav Stas Data 28 iunie 2020 20:33:56
Problema Ciclu Eulerian Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <set>
#include <deque>

using namespace std;

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

const int NMAX = 1e5+5;

int n,m;
vector <multiset <int> >a(NMAX);
vector <int> ans;

void dfs(int x)
{
    while(!a[x].empty())
    {
        int y;
        for(int c:a[x])
        {
            y=c;
            break;
        }
        a[x].erase(a[x].find(y));
        a[y].erase(a[y].find(x));
        dfs(y);
    }
    ans.push_back(x);
}
int main()
{

    fin >> n >> m;
    while(m--)
    {
        int x,y;
        fin >> x >> y;
        a[x].insert(y);
        a[y].insert(x);
    }
    for(int i=1;i<=n;i++)
        if(a[i].size()%2)
        {
            cout << -1;
            return 0;
        }
    dfs(1);
    for(int x:ans)
        fout << x << " ";
    return 0;

}