Cod sursa(job #2373729)

Utilizator andaraluca2001Anda Epure andaraluca2001 Data 7 martie 2019 15:02:44
Problema Ciclu Eulerian Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 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++) {

        cin>>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++) {

        cout<<ans[i]<<" ";

    }

    cout<<"\n";

    return 0;

}