Cod sursa(job #2421097)

Utilizator Eszter04Halasz Eszter Eszter04 Data 14 mai 2019 11:41:09
Problema Ciclu Eulerian Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.33 kb
//#include <iostream>
#include <fstream>
#include <vector>
#include <deque>

using namespace std;

ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");

struct adat
{
    int p,h;
    bool lat;
};
struct el
{
    vector<adat>e;
};
vector<el>x;

deque<int>meg,v;

int n,m,i,a,b,k,k1;

int euler(int csp)
{
    int i;
    v.push_front(csp);
    for(i=0;i<x[csp].e.size();++i)
    {
        if(!x[csp].e[i].lat)
        {
            x[csp].e[i].lat=1;
            k=x[csp].e[i].h;
            k1=x[csp].e[i].p;
            x[k1].e[k].lat=1;
            euler(x[csp].e[i].p);
        }
    }
    meg.push_front(v.front());
    v.pop_front();
}
int main()
{
    cin>>n>>m;
    x.resize(n+1);
    for(i=1;i<=m;++i)
    {
        cin>>a>>b;
        if(a!=b)
        {
            x[a].e.push_back({b,x[b].e.size(),0});
            x[b].e.push_back({a,x[a].e.size()-1,0});
        }
        if(a==b)
        {
            x[a].e.push_back({b,x[b].e.size()+1,0});
            x[b].e.push_back({a,x[a].e.size()-1,0});
        }
    }

   /* for(i=1;i<=n;++i)
    {
        cout<<i<<": ";
        for(auto e:x[i].e)
            cout<<e.p<<" "<<e.h<<" "<<e.lat<<"\n";;
        cout<<"\n";
    }
*/
    euler(1);

    for(i=0;i<meg.size()-1;++i)
        cout<<meg[i]<<" ";
    return 0;
}