Cod sursa(job #1218726)

Utilizator azkabancont-vechi azkaban Data 12 august 2014 13:19:16
Problema Ciclu Eulerian Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.28 kb
#include <fstream>
#include <cstring>
#include <vector>
using namespace std;
ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");

vector <int> V[100113];
long n,i,j,valid,m,a,b;
int viz[100113];
long RG[100113];
void euler(int nod)
{
 int key;
 if (!V[nod].empty()){
                      key=V[nod][V[nod].size()-1];
                      V[nod].pop_back();
                      cout<<key<<" "; 
                      for (i=V[key].size()-1;i>=0;--i)
                         if (V[key][i]==nod){
                                             V[key].erase(V[key].begin()+i);
                                             break;
                                             }
                                           
                      euler(key);
                      }
}
int main()
{
cin>>n>>m;
for (i=1;i<=m;++i) {
                   cin>>a>>b;
                   V[a].push_back(b);
                   V[b].push_back(a);
                   ++RG[a];
                   ++RG[b];
                   }
valid=1;
for (i=1;i<=n;++i) 
        if (RG[i]%2!=0){ 
                        cout<<"-1 \n";
                        valid=0;
                        break;
                        }
if (valid==1) euler(1);                             
return 0;
}