Cod sursa(job #2609877)

Utilizator toadehuPuscasu Razvan Stefan toadehu Data 3 mai 2020 18:54:47
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <bits/stdc++.h>

using namespace std;

const int Nmax = 100007;

int n,m,Xor[5*Nmax],ans[5*Nmax],top;

vector<int> g[Nmax];

bool viz[5*Nmax];

void dfs(int a)
{
    while (!g[a].empty())
    {
        int i=g[a].back();
        g[a].pop_back();
        if (viz[i]==0)
        {
            viz[i]=1;
            dfs(Xor[i]^a);
        }
    }
    ans[++top]=a;
}

int main()
{
    ifstream fin ("ciclueuler.in");
    ofstream fout ("ciclueuler.out");
    fin>>n>>m;
    for (int i=1; i<=m; ++i)
    {
        int u, v;
        fin>>u>>v;
        Xor[i]=u^v;
        g[u].push_back(i);
        g[v].push_back(i);
    }
    for (int i=1; i<=n; ++i)
    {
        if (((int)g[i].size()%2)==1)
        {
            fout<<"-1\n";
            return 0;
        }
    }
    dfs(1);
    for (int i=1; i<=m; ++i)
    {
        fout<<ans[i]<<" ";
    }
    return 0;
}