Cod sursa(job #2870792)

Utilizator Casian_doispeChiriac Casian Casian_doispe Data 12 martie 2022 16:06:43
Problema Ciclu Eulerian Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <fstream>
#include <vector>
#include <deque>
#include <algorithm>
#include <climits>
#include <iomanip>
#include <cmath>

#define MOD 666013
#define INT_MAX 1000000000

using namespace std ;

ifstream cin ("ciclueuler.in") ;
ofstream cout ("ciclueuler.out") ;

int n ;

vector<pair<int, int> > m[100009] ;

vector<int> rez ;

void ceuler(int nod)
{
    while(m[nod].size())
    if(m[nod].back().first != -1)
    {
        int nextnod = m[nod].back().first ;
        int poz = m[nod].back().second ;

        m[nod].pop_back() ;

        m[nextnod][poz].first = -1 ;

        ceuler(nextnod) ;
    }else m[nod].pop_back() ;

    rez.push_back(nod) ;
}

int main()
{
    int q ;

    cin >> n >> q ;

    int qq = q ;

    while(q --)
    {
        int a, b ;

        cin >> a >> b ;

        m[a].push_back({b, m[b].size()}) ;

        m[b].push_back({a, m[a].size() - 1}) ;
    }

    ceuler(1) ;

    if(rez.size() - 1 != qq)
    {
        cout << -1 ;

        return 0 ;
    }

    for(int f = 0 ; f < rez.size() - 1 ; f ++)
        cout << rez[f] << " " ;

    return 0 ;
}
/// 1990