Cod sursa(job #2298619)

Utilizator MDiana15Diana M MDiana15 Data 8 decembrie 2018 11:55:27
Problema Ciclu Eulerian Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>
#define NMAX 500002
using namespace std;
ifstream f ("ciclueulerian.in");
ofstream g ("ciclueulerian.out");
vector < pair <int,int> > v[NMAX*2];
bool viz[NMAX] ;
int N , M , k , x , a[NMAX] , i , y, poz = 0 ;
void ciclu(int s)
{
    while (!v[s].empty())
    {
        int p = v[s].back().second;
        int vecin = v[s].back().first;
        v[s].pop_back();
        if (!viz[p])
        {
            viz[p] = 1 ;
            ciclu(vecin);
        }
    }

    poz ++ ;
    a[poz] = s;



}

int main()
{
    f >> N >> M ;
    for (i = 1; i <= M ; i ++)
    {
        f >> 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 != 0) {g << -1 << '\n'; return 0;}
    ciclu(1) ;
    for (i = 1 ; i < poz ; i ++)
        g << a[i] << ' ' ;
    return 0;

}