Cod sursa(job #2198882)

Utilizator gbibBacotiu Gabi gbib Data 25 aprilie 2018 18:53:43
Problema Ciclu Eulerian Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
vector <int> v[100005];
vector <int> ciclu;
void euler(int nod)
{
    while(v[nod].size()) {
        int nou = v[nod].back();
        v[nod].pop_back();
        v[nou].erase(find(v[nou].begin(),v[nou].end(),nod));
        euler(nou);
    }
    ciclu.push_back(nod);
}

int main()
{int n,m,i,a,b;
in>>n>>m;
for(i=1;i<=m;i++)
{
    in>>a>>b;
    v[a].push_back(b);
    b[v].push_back(a);
}
for(i=1;i<=n;i++)
    if(!v[i].size()||v[i].size()%2==1) {
        out<<"-1\n";
        return 0;
    }
euler(1);
ciclu.pop_back();
for (auto nod: ciclu) {
    out<<nod<<" ";
}
    return 0;
}