Cod sursa(job #3329328)

Utilizator iulianrotaruRotaru Gheorghe-Iulian iulianrotaru Data 12 decembrie 2025 20:36:57
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <bits/stdc++.h>
using namespace std;

const int M_MAX = 500001;
const int N_MAX = 100001;

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

int M, X[M_MAX], Y[M_MAX];
bool viz[M_MAX];
vector<int> G[N_MAX];
int k, sol[M_MAX];

void euler(int nod) {
    while(!G[nod].empty()) {
        int x = G[nod].back();
        G[nod].pop_back();
        if(viz[x] == 0) {
            viz[x] = 1;
            euler(X[x] + Y[x] - nod);
        }
    }

    fout << nod << ' ';
}

int main() {
    int N;
    fin >> N >> M;

    for(int i = 1;i <= M; ++i)
    {
        fin >> X[i] >> Y[i];
        G[X[i]].push_back(i);
        G[Y[i]].push_back(i);
    }

    for(int i = 1; i <= N; ++i)
        if((int)G[i].size() % 2 == 1)
        {
            fout << -1;
            return 0;
        }

    euler(1);
    return 0;
}