Cod sursa(job #2562313)

Utilizator andaraluca2001Anda Epure andaraluca2001 Data 29 februarie 2020 13:27:27
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

typedef long double ld;

const int N=100006;

const int M=500006;



int n,m;



vector<int>ind[N];



int f[M],s[M];

bool viz[M];

int ans[M],vf=0;

int k;





ifstream in("ciclueuler.in");

ofstream out("ciclueuler.out");



void dfs(int nod) {



    while(!ind[nod].empty()) {



        k=ind[nod].back();



        ind[nod].pop_back();



        if(viz[k]==0) {



            viz[k]=1;



            dfs(f[k]+s[k]-nod);



        }



    }



    ans[++vf]=nod;



}







int main() {









    in>>n>>m;



    for(int i=1;i<=m;i++) {



        in>>f[i]>>s[i];



        ind[f[i]].push_back(i);



        ind[s[i]].push_back(i);



    }



    for(int i=1;i<=n;i++) {



        if(ind[i].size()%2==1) {



            out<<"-1\n";



            return 0;



        }



    }



    dfs(1);



    for(int i=1;i<vf;i++) {



        out<<ans[i]<<" ";



    }







    return 0;



}