Cod sursa(job #1218720)

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

vector <int> V[100013];
long n,i,j,valid,m,a,b;
int viz[100013];
long RG[100013];

void euler(long nod)
{
 long key;
 if (!V[nod].empty()){
                      key=V[nod][V[nod].size()-1];
                      V[nod].pop_back();
                      for (i=V[key].size()-1;i>=0;--i)
                         if (V[key][i]==nod){
                                             V[key].erase(V[key].begin()+i);
                                             break;
                                             }
                      cout<<nod<<" ";                      
                      euler(key);
                      }
}
void dfs(long nod)
{
 viz[nod]=1;
 for (i=0;i<V[nod].size();++i)
     if (viz[V[nod][i]]==0) dfs(V[nod][i]);
}
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;
}