Cod sursa(job #2722748)

Utilizator mateihMatei Hristodorescu mateih Data 13 martie 2021 11:43:30
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 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 x){
    while(v[x].size()!=0){
        int m=v[x].back();
        v[x].pop_back();
        if(!viz[m]){
            viz[m]=1;
            int vecin;
            if(a[m]==x)
                vecin=b[m];
            else
                vecin=a[m];
            euler(vecin);
        }
    }
    ans.push_back(x);
}


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]<<" ";
}


}