Cod sursa(job #2370807)

Utilizator qwerty1234qwerty qwerty1234 Data 6 martie 2019 13:48:50
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb

#include <bits/stdc++.h>


using namespace std;

ifstream fin ("ciclueuler.in");
ofstream fout ("ciclueuler.out");

const int Mmax = 500005;

int n , m , X[Mmax] , Y[Mmax] , P[Mmax] , sol[Mmax] , k;


vector < int > L[Mmax / 5];

bool viz[Mmax];

void DFS(int nod)
{

    while(P[nod] < L[nod].size())
    {
        int it = L[nod][P[nod]++];
        if(!viz[it])
        {
            viz[it] = true;
            DFS(X[it] + Y[it]  - nod);
        }
    }
    sol[++k] = nod;
}

int main()
{
    fin >> n >> m;
    for(int i = 1 ; i <= m ; i++)
    {
        fin >> X[i] >> Y[i];
        L[X[i]].push_back(i);
        L[Y[i]].push_back(i);
    }
    for(int i = 1 ; i <= n ; i++)
        if(L[i].size() % 2)
    {
        fout << "-1\n";
        return 0;
    }
    DFS(1);
    for(int i = 1 ; i < k ; i++)
        fout << sol[i] << " ";
    fout << "\n";
    fin.close();
    fout.close();
}