Cod sursa(job #1218916)

Utilizator azkabancont-vechi azkaban Data 12 august 2014 21:11:30
Problema Ciclu Eulerian Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.63 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,nr;
 while(!V[nod].empty()){
                        for (i=0,nr=0;i<V[nod].size();++i)
                           if (V[nod][i]==nod) {
                                                if (nr%2==0) cout<<nod<<" ";
                                                ++nr;
                                                V[nod].erase(V[nod].begin()+i);
                                                }
                       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;
}