Cod sursa(job #2696697)

Utilizator Arsene_DenisaArsene Denisa Arsene_Denisa Data 16 ianuarie 2021 13:35:39
Problema Ciclu Eulerian Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.12 kb
#include <iostream>
#include<fstream>
#include<deque>

using namespace std;
deque<int>r;
deque<int>v[100001];
int n, m, i;
bool viz[500001];
int x[500001], y[500001];
int euler(int pz) {
    while(v[pz].size()) {
        int muchie;
        muchie=v[pz].back();
        v[pz].pop_back();
        if(viz[muchie]==0) {
                    viz[muchie]=1;
                    int vecin;
        if(x[muchie]==pz) {
                vecin=y[muchie];
        }
        else {
                vecin=x[muchie];
        }
        euler(vecin);
        }
    }
    r.push_back(pz);
}




int main() {

    ifstream fin("ciclueuler.in");
    ofstream fout("ciclueuler.out");
    fin>>n>>m;
    for(i=1;i<=m;i++) {
            fin>>x[i]>>y[i];
            v[x[i]].push_back(i);
            v[y[i]].push_back(i);
    }
    int ok=1;
    for(i=1;i<=n;i++) {
            if(v[i].size()%2!=0) {
                    ok=-1;;
            }
    }
    if(ok==1) {
    euler(1);
    for(int i=0;i<r.size()-1;i++) {
            fout<<r[i]<<" ";
    }
    }
    else {
            fout<<"-1";
    }
    return 0;
}