Cod sursa(job #2209956)

Utilizator robertkarolRobert Szarvas robertkarol Data 5 iunie 2018 11:05:53
Problema Ciclu Eulerian Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <bits/stdc++.h>

using namespace std;

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

vector<vector<int>> G;
vector<int> ciclu;
int i, x, y, n, m;
void cicluEulerian(int nod)
{
    //cout<<nod;
    for(;G[nod].size();)
    {
        auto it = G[nod].end() - 1;
        G[nod].erase(it);
        G[*it].erase(find(G[*it].begin(), G[*it].end(), nod));
        cicluEulerian(*it);
    }
    ciclu.push_back(nod);
}
int main()
{
    fin>>n>>m;
    G.resize(n+1);
    for(i=1;i<=m;i++)
    {
        fin>>x>>y;
        G[x].push_back(y);
        G[y].push_back(x);
    }
    for(const auto& it : G)
        if(it.size()%2)
    {
        fout<<-1;
        return 0;
    }
    cicluEulerian(1);
    ciclu.pop_back();
    for(const auto& it : ciclu)
        fout<<it<<" ";
    return 0;
}