Cod sursa(job #2581282)

Utilizator coronavirusCovid19 coronavirus Data 14 martie 2020 20:08:22
Problema Ciclu Eulerian Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <bits/stdc++.h>

using namespace std;

#define LMAX 100005

vector<pair<int,int> > G[LMAX];

#define MMAX 500005

bool viz[MMAX];

int ct=0,ans[MMAX];

void euler(int k){

    while(!G[k].empty()){

        auto it=G[k].back();

        G[k].pop_back();

        euler(it.first);

    }

    ans[++ct]=k;

}

int main(){

    freopen("ciclueuler.in","r",stdin);

    freopen("ciclueuler.out","w",stdout);

    int n,m;

    scanf("%d %d",&n,&m);

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

        int u,v;

        scanf("%d %d",&u,&v);

        G[u].push_back({v,i});

        G[v].push_back({u,i});

    }

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

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

            printf("-1\n");

            return 0;

        }

    euler(1);

    for(int i=2;i<=ct;++i)

        printf("%d ",ans[i]);

    return 0;

}