Cod sursa(job #2475752)

Utilizator mjmilan11Mujdar Milan mjmilan11 Data 17 octombrie 2019 15:51:35
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMAX = 500005;

struct idk
{
    int vc,mch;
};

int ver[NMAX],rasp[NMAX];
vector < idk > v[NMAX];
int n,m,k;

void dfs(int nod)
{
    while(v[nod].size()!=0)
    {
        int vecin=v[nod].back().vc;
        int muchie=v[nod].back().mch;
        v[nod].pop_back();
        if(ver[muchie]==0)
        {
            ver[muchie]=1;
            dfs(vecin);
        }
    }
    rasp[++k]=nod;
}

int main()
{
    int x,y;
    fin >> n >> m;
    for(int i=1;i<=m;i++)
    {
        fin >> x >> y;
        v[x].push_back({y,i});
        v[y].push_back({x,i});
    }
    for(int i=1;i<=n;i++)
        if(v[i].size()%2==1){
            fout << -1;
            return 0;
        }
    dfs(1);
    for(int i=1;i<k;i++) fout << rasp[i] << ' ';
    return 0;
}