Cod sursa(job #2713283)

Utilizator mateihMatei Hristodorescu mateih Data 27 februarie 2021 16:34:51
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include<fstream>
#include<vector>

using namespace std;

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

int a[500001],b[500001];

vector<int> v[100001],ans;

bool viz[500001];

void euler(int pz){
    while(v[pz].size()!=0){
        int muchia_curenta=v[pz].back();
        v[pz].pop_back();
        if(!viz[muchia_curenta]){
            viz[muchia_curenta]=1;
            int vecin;
            if(a[muchia_curenta] == pz)
                vecin = b[muchia_curenta];
            else
                vecin = a[muchia_curenta];
            euler(vecin);
        }
    }
    ans.push_back(pz);
}


int main () {
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++){
    cin>>a[i]>>b[i];
    v[a[i]].push_back(i);
    v[b[i]].push_back(i);
}
int ok=1;
for(int i=1;i<=n;i++){
    if(v[i].size()%2==1)
        ok=0;
}
if(ok==0)
    cout<<-1;
else{
    euler(1);
    for(int i=0;i<ans.size()-1;i++)
        cout<<ans[i]<<" ";
}


}