Cod sursa(job #2384746)

Utilizator smoc_georgemarianSmoc George-Marian smoc_georgemarian Data 21 martie 2019 10:02:38
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <bits/stdc++.h>
#define DMAX 100010

using namespace std;

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

struct muc{
     int node,id;
     muc(int node,int id){
         this->node=node;
         this->id=id;
    }
};

vector <muc> V[DMAX];
vector <int> c;
bool uz[5*DMAX];

int n;

void citire();
void euler(int node);
void verif();
int main()
{int i;
 citire();
 verif();
 euler(1);
 for(i=0;i<c.size()-1;i++)
     fout<<c[i]<<' ';
 fout<<'\n';
 return 0;
}
void citire()
{int i,m,x,y;
 fin>>n>>m;
 for(i=1;i<=m;i++)
     {fin>>x>>y;
      V[x].push_back(muc(y,i));
      V[y].push_back(muc(x,i));
     }
}
void euler(int node)
{while(!V[node].empty())
       {muc edge=V[node].back();
        V[node].pop_back();
        if(!uz[edge.id])
           {uz[edge.id]=true;
            euler(edge.node);
           }
       }
 c.push_back(node);
}
void verif()
{int i;
    for(i=1;i<=n;i++)
     if(V[i].size()%2) {fout<<-1;exit(0);}
}