Cod sursa(job #2571311)

Utilizator smoc_georgemarianSmoc George-Marian smoc_georgemarian Data 4 martie 2020 22:15:39
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <bits/stdc++.h>
#define NMAX 100100
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
struct tip{int x; int m;};
vector <tip>g[NMAX];
bool uz[5*NMAX];
int n,m;
vector<int> sol;
void citire();
void verif();
void euler(int k);
void afis();
int main()
{citire();
 verif();
 euler(1);
 afis();
    return 0;
}
void citire()
{int x,y,i;
  fin>>n>>m;
  for(i=1;i<=m;i++)
    {fin>>x>>y;
     g[x].push_back({y,i});
     g[y].push_back({x,i});
    }

}
void verif()
{
   int i;
   for(i=1;i<=n;i++)
        if( g[i]. size() %2 )
    {       fout<<-1;exit(0);}
}
void euler(int k)
{
  int i;
  while(!g[k].empty())
        {
          tip a=g[k].back();
          g[k].pop_back();
          if(!uz[a.m])
            {
               uz[a.m]=1;
               euler(a.x);
            }
        }
    sol.push_back(k);
}
void afis()
{
 int i;
 for(i=0;i<sol.size()-1;i++)
         fout<<sol[i]<<" ";
}