Cod sursa(job #2207155)

Utilizator Radu_FilipescuFilipescu Radu Radu_Filipescu Data 24 mai 2018 23:14:00
Problema Ciclu Eulerian Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.43 kb
#include <fstream>
#include <vector>
#include <deque>

using namespace std;

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

int N,M;

struct Nod
{
  vector <int> Ad;
} Graf[100002];

int grad[100003];

void Read()
{
  fin>>N>>M;

  int a,b;

  for(int i=1; i<=M; ++i)
  {
    fin>>a>>b;

    Graf[a].Ad.push_back(b);
    Graf[b].Ad.push_back(a);

    ++grad[a];
    ++grad[b];
  }

  fout<<'1';
  fout.close();

  fin.close();
}

void Do()
{
  for(int i=1; i<=N; ++i)
    if(grad[i]%2)
     {
       fout<<"-1"<<'\n';
       return;
     }

  int start=1;
  int curent=1;
  int next;
  bool gasit;

  grad[N+1]=-1;

  gasit=1;

  while(gasit)
  {
    gasit=0;

    if(Graf[curent].Ad.empty()) break;

    for(int i=0; i<Graf[curent].Ad.size(); ++i)
      if(grad[Graf[curent].Ad[i]]>1 && Graf[curent].Ad[i]!=-1)
       {
         gasit=1;
         next=Graf[curent].Ad[i];

         Graf[curent].Ad[i]=-1;

         --grad[next];
         break;
       }

    if(!gasit)
     for(int i=0; i<Graf[curent].Ad.size(); ++i)
      if(Graf[curent].Ad[i]!=-1)
       {
         next=Graf[curent].Ad[i];

         Graf[curent].Ad[i]=-1;

         --grad[next];
         break;
       }

    --grad[curent];

    //fout<<curent<<' '<<next<<'\n';
    fout<<curent<<' ';

    curent=next;
  }
}

int main()
{
    Read();
   // Do();

    return 0;
}