Cod sursa(job #2735097)

Utilizator valeriucaraselCarasel Valeriu valeriucarasel Data 1 aprilie 2021 20:11:41
Problema Ciclu Eulerian Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <stack>

using namespace std;

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

const int N=100005,M=500005;

vector<int> a[N],c;

struct muchie
{
    int x,y;
    bool anulat;
};
muchie e[M];

void euler(int x)
{
    for (int j=a[x].size()-1;j>=0;j--)
    {
        int i=a[x][j];
        a[x].pop_back();
        if (e[i].anulat) continue;
        int y=e[i].x+e[i].y-x;
        e[i].anulat=true;
        euler(y);
    }
    out<<x<<" ";
}

int vec[N+2];

int main()
{
    int n,m;
    in>>n>>m;
    int u,v;
    for (int i=1;i<=m;i++)
    {
        in>>u>>v;
        vec[u]++;
        vec[v]++;
        a[u].push_back(i);
        a[v].push_back(i);
        e[i].x=u;
        e[i].y=v;
    }
    for (int i=1;i<=n;i++)
    {
        if (vec[i]%2!=0)
        {
            out<<-1;
            return 0;
        }
    }
    euler(1);
    in.close();
    out.close();
    return 0;
}