Cod sursa(job #3361972)

Utilizator R0OBert_7Gheorghe Robert R0OBert_7 Data 31 iulie 2026 10:57:59
Problema Ciclu Eulerian Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream cin ("ciclueuler.in") ;
ofstream ccout ("ciclueuler.out");
const int n_max = 100005,m_max = 500005;
vector <pair<int, int>> list[n_max];
bool sters[m_max];
int  verif[n_max];
vector <int> ciclu;

void euler(int node){
    pair <int, int> mch;
    while(!list[node].empty()){
        mch = list[node].back();
        list[node].pop_back();
        if(!sters[mch.second]) {
            sters[mch.second] = true;
            euler(mch.first);
        }

    }
    ciclu.push_back(node);
}

int main() {

    int n,m;
    cin >> n >> m;
    int a,b;
    pair <int, int> psh;
    for(int i =1; i<=m; i++){
        cin >> a >> b;

        psh = {b,i};
        list[a].push_back(psh);
        psh.first = a;
        list[b].push_back(psh);

        verif[a]++;
        verif[b]++;
    }
    for(int i =1; i<=n; i++){
        if(verif[i] % 2 == 1) {
            cout << -1;
            return 0;
        }
    }
    euler(1);
    for(int i =0; i < ciclu.size(); i++){
        cout << ciclu[i] << ' ';
    }
    return 0;
}