Cod sursa(job #2013041)

Utilizator cipri321Marin Ciprian cipri321 Data 20 august 2017 11:07:59
Problema Ciclu Eulerian Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#include <vector>
#include <algorithm>
#define DIM 100001
using namespace std;
ifstream fi("ciclueuler.in");
ofstream fo("ciclueuler.out");
int n,m;
vector<int> V[DIM];
bool ok;
vector<int> R;
void dfs(int v)
{
    if(V[v].size())
        for(int i=0;i<V[v].size();i++)
        {
            int b=V[v].back();
            V[v].pop_back();
            V[b].erase(find(V[b].begin(),V[b].end(),v));
            dfs(b);
        }
    R.push_back(v);
}
int main()
{
    fi>>n>>m;
    for(int i=1;i<=m;i++)
    {
        int a,b;
        fi>>a>>b;
        V[a].push_back(b);
        V[b].push_back(a);
    }
    ok=true;
    for(int i=1;i<=n;i++)
        if(V[i].size()==0 || V[i].size()%2==1)
            ok=false;
    if(!ok)
        fo<<-1;
    else
    {
        dfs(1);
        for(int i=0;i<R.size()-1;i++)
            fo<<R[i]<<" ";
    }
    fi.close();
    fo.close();
    return 0;
}