Cod sursa(job #2571080)

Utilizator vmnechitaNechita Vlad-Mihai vmnechita Data 4 martie 2020 20:59:39
Problema Ciclu Eulerian Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <bits/stdc++.h>
#define NMAX 100005

using namespace std;

ofstream fout ("ciclueuler.out");

struct A
{
    int dest, ind;
};

vector < A > v[NMAX];
bitset < 5 * NMAX > viz;

void dfs ( int nod );

int main()
{
    int n, m, i, x, y;

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

    scanf ( " %d %d \n ", &n, &m );
    for ( i = 1 ; i <= m ; i++ )
    {
         scanf ( " %d %d \n ", &x, &y );
         v[x].push_back ( { y, i } );
         v[y].push_back ( { x, i } );
    }

    for ( i = 1 ; i <= n ; i++ )
        if ( v[i].size() % 2 == 1 )
        {
            fout << -1;
            return 0;
        }

    dfs ( 1 );

    return 0;
}

void dfs ( int nod )
{
    vector < A > :: iterator it;
    A x;

    for ( it = v[nod].begin() ; it != v[nod].end() ; it++ )
    {
        x = *it;

        if ( viz[x.ind] == 0 )
        {
            viz[x.ind] = 1;
            dfs ( x.dest );
        }
    }

    fout << nod << ' ';
}