Cod sursa(job #3313656)

Utilizator Nasa1004Ema Nicole Gheorghe Nasa1004 Data 5 octombrie 2025 19:05:17
Problema Ciclu Eulerian Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#include <vector>

using namespace std;
const int NMAX = 5e5;

ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");

pair <int, int> edge[NMAX + 2];
vector <vector <pair <int, int>>>v; ///first = nod, second = id

bool viz[NMAX + 2]; ///muchiile
vector <int> ans;
void dfs(int start) {
    for(auto x : v[start]) {
        if(!viz[x.second]) {
            viz[x.second] = 1;
            dfs(x.first);
        }
    }
    ans.push_back(start);
}
int main() {
    int n, m;
    cin >> n >> m;
    v.resize(n + 1);
    for(int i = 1; i <= m; i++) {
        cin >> edge[i].first >> edge[i].second;
        v[edge[i].first].push_back({edge[i].second, i});
        v[edge[i].second].push_back({edge[i].first, i});
    }
    for(int i = 1; i <= n; i++) {
        if(v[i].size() % 2) {
            cout << "-1";
            return 0;
        }
    }
    dfs(1);
    ans.pop_back();
    for(auto x : ans)
        cout << x << " ";
    return 0;
}