Cod sursa(job #1163575)

Utilizator thebest001Neagu Rares Florian thebest001 Data 1 aprilie 2014 14:40:26
Problema Ciclu Eulerian Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <vector>
#include<stack>
using namespace std;

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

vector<int> G[100001];
stack<int> s;

void ciclu(){
  s.push(1);
  while (!s.empty()){
    int t=s.top();
    if (!G[t].size()){
      out<<t<<" ";
      s.pop();
    } else {
      int y=G[t][0];
      G[t].erase(G[t].begin());
      int yLoc=-1;
      for (int i=0;i<G[y].size();i++)
        if (G[y][i]==t){
          yLoc=i;
          break;
        }
      G[y].erase(G[y].begin()+yLoc);
      s.push(y);
    }
  }
}

int main() {
  int n,k;
  in>>n>>k;
  for (int i=1;i<=k;i++){
    int x,y;
    in>>x>>y;
    G[x].push_back(y);
    G[y].push_back(x);
  }
  for (int i=1;i<=n;i++)
    if (G[i].size()&1){
      out<<"-1\n";
      return 0;
    }
  ciclu();
  return 0;
}