Cod sursa(job #2365885)

Utilizator radurotaruRotaru Radu Stefan radurotaru Data 4 martie 2019 17:10:10
Problema Ciclu Eulerian Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
int q,a[100001],n,x,y,m;
vector <int> r[100001];
void euler(int k)
{
    for(int i=0; i<r[k].size(); i++)
    {
        if(r[k][i]!=-1)
        {
            int t=r[k][i];
            r[k][i]=-1;
            int h=1;
            for(int j=0; j<r[t].size() && h; j++)
            {
                if(r[t][j]==k)
                {
                    r[t][j]=-1;
                    h=0;
                }
            }
            euler(t);
        }
    }
    q++;
    a[q]=k;
}
int main()
{
    f>>n>>m;
    for(int i=1; i<=m; i++)
    {
        f>>x>>y;
        r[x].push_back(y);
        r[y].push_back(x);
    }
    int e=1;
    for(int i=1;i<=n && e;i++)
    {
        if(r[i].size()%2==1)
            {
                g<<-1;
                e=0;
            }
    }
    if(e)
    {
    euler(1);
    for(int i=1; i<q; i++)
        g<<a[i]<<" ";
    }
    return 0;
}