Cod sursa(job #2635049)

Utilizator valentinchipuc123Valentin Chipuc valentinchipuc123 Data 13 iulie 2020 04:19:37
Problema Ciclu Eulerian Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");

int n,m,grad[100005],stiva[100005],vf;
list< int >vecini[100005];

int main()
{
 f>>n>>m;
 for(int i=1;i<=m;i++){
  int x,y;
  f>>x>>y;
  vecini[x].push_back(y);
  vecini[y].push_back(x);
  grad[x]++;
  grad[y]++;
 }
 for(int i=1;i<=n;i++){
   if(grad[i]%2==1){
    g<<"-1";
    return 0;
   }
 }
 vf=1;
 stiva[1]=1;
 int x,y;
 while( vf>0 ){
   x=stiva[vf];
   while( !vecini[x].empty() ) {
     y=vecini[x].front();
     vecini[x].pop_front();
     vecini[y].erase(find(vecini[y].begin(),vecini[y].end(),x)),vf++,stiva[vf]=y,x=y;
   }
   g<<stiva[vf--]<<' ';
 }

}