Cod sursa(job #2230433)

Utilizator FunnyStockyMihnea Andreescu FunnyStocky Data 10 august 2018 10:13:20
Problema Ciclu Eulerian Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef long double ld;

const int N=100000+5;
const int M=500000+5;
int n,m;
vector<int>ind[N];
int f[M],s[M];
bool viz[M];
int ans[M],vf=0;
int k;

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() {
    ios_base::sync_with_stdio(false); cin.tie(0);
    freopen("ciclueuler.in","r",stdin);
    freopen("ciclueuler.out","w",stdout);
    cin>>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) {
            cout<<"-1\n";
            return 0;
        }
    }
    dfs(1);
    for(int i=1;i<vf;i++) {
        cout<<ans[i]<<" ";
    }
    cout<<"\n";
    return 0;
}
/**
**/