Cod sursa(job #1613174)

Utilizator Harsan_SabinHarsan Sabin Harsan_Sabin Data 25 februarie 2016 11:18:30
Problema Ciclu Eulerian Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>
#include <cstdlib>
#include <algorithm>
#include <stack>
#include <queue>
#include <vector>

using namespace std;

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

int n,m,i,j,nr,sta;
stack <int> T;
queue <int> F;
vector<int> a[100001];


void DFS(int Vf)
{
    T.push(Vf);
    int k=1;

    for(int z=0;z<a[Vf].size();++z)
    {
        int aux=a[Vf].back();
        a[Vf].pop_back();

        for(k=0;k<a[aux].size();++k)
            if(a[aux][k]==Vf)
                break;

        a[aux].erase(a[aux].begin()+k);
        DFS(aux);
    }

    F.push(T.top());
    T.pop();
}

int main()
{
    cin>>n>>m;

    for(int z=1;z<=m;++z)
    {
        cin>>i>>j;

        a[i].push_back(j);
        a[j].push_back(i);
    }

    DFS(1);

    while(!T.empty())
    {
        F.push(T.top());
        T.pop();
    }

    //while(!F.empty())
    while(F.size()!=1)
    {
        cout<<F.front()<<' ';
        F.pop();
    }

    return 0;
}