Cod sursa(job #2279226)

Utilizator Luca19Hritcu Luca Luca19 Data 9 noiembrie 2018 10:28:19
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>
#include<vector>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
bool viz[500002];
vector<pair<int,int> >v[100002];
int n,m,x,k,a[500002],i,y;
void ciclu(int x)
{
    while (!v[x].empty())
    {
      int p=v[x].back().second;
      int vecin=v[x].back().first;
      v[x].pop_back();
      if(!viz[p])
      {
          viz[p]=1;
          ciclu(vecin);
      }
    }
    a[k++]=x;
}
int main()
{
  f>>n>>m;
  for(i=1;i<=m;i++)
  {
      f>>x>>y;
      v[x].push_back({y,i});
      v[y].push_back({x,i});
  }
  for(i=1;i<=n;i++)
    if(v[i].size()%2!=0)
  {
      g<<-1;
      return 0;
  }
  ciclu(1);
  for(i=1;i<=k;i++)
    g<<a[i]<<" ";
    return 0;
}