Cod sursa(job #2365809)

Utilizator radurotaruRotaru Radu Stefan radurotaru Data 4 martie 2019 16:35:59
Problema Ciclu Eulerian Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#include <list>
#include <iterator>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
int q,a[100000],n,x,y,m;
list <int> r[100001];
list <int> :: iterator itr;
list <int> :: iterator itrr;
void euler(int k)
{
    for(itr=r[k].begin(); itr!=r[k].end(); itr++)
    {
        int t=*itr;
        r[k].erase(itr);
        int h=1;
        for(itrr=r[t].begin(); itrr!=r[t].end() && h; itrr++)
        {
            if(*itrr==k)
            {
                r[t].erase(itrr);
                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);
    }
    for(int i=1; i<=n; i++)
    {
        r[i].push_back(i);
    }
    euler(1);
    for(int i=1; i<q; i++)
        g<<a[i]<<" ";
    return 0;
}