Cod sursa(job #2215171)

Utilizator stefantagaTaga Stefan stefantaga Data 21 iunie 2018 11:09:36
Problema Ciclu Eulerian Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
#include <queue>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
int n,m,v[10001][10001],a[100001],q,nr;
queue <int> c;
void df(int x)
{
    int i,ok1=0,maxim=0,k=0;
    for (i=1;i<=n;i++)
    {
        if (v[x][i]>0&&x==i)
        {
            v[x][i]-=2;
            v[i][x]-=2;
            a[++q]=x;
            v[0][x]--;
            df(x);
        }
        if (v[x][i]>0)
        {
            if (v[0][i]>maxim)
            {
                maxim=v[0][i];
                k=i;
            }
        }
    }
    if (k!=0)
    {
        v[0][k]--;
    a[++q]=k;
    v[0][x]--;
    v[x][k]--;
    v[k][x]--;
    df(k);
    }
}
int i,x,y;
int main()
{

    f>>n>>m;
    for (i=1;i<=m;i++)
    {
        f>>x>>y;
        v[x][y]++;
        v[y][x]++;
        v[0][x]++;
        v[0][y]++;
    }
    df(1);
    for (i=1;i<=q;i++)
    {
        g<<a[i]<<" ";
    }
    return 0;
}