Cod sursa(job #2343162)

Utilizator HoriqHoria Pacurar Horiq Data 13 februarie 2019 18:49:17
Problema Ciclu Eulerian Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>
#include <stack>
#include <algorithm>
#include <vector>
#include <string>

using namespace std;

ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");
const int NMAX=100000;
vector<int>v[NMAX+5];
stack <int> st;
void Eu(int node)
{
    int other;
    while(!v[node].empty())
    {
        st.push(node);
        other=v[node].back();
        v[node].pop_back();
        v[other].erase(find(v[other].begin(),v[other].end(),node));
        node=other;
    }
}
int main()
{
    int node,i,j,n,m,u,l,conex=1;
    cin>>n>>m;
    for(i=1;i<=m;i++)
    {
        cin>>u>>l;
        v[u].push_back(l);
        v[l].push_back(u);
    }
    conex=1;
    for(i=1;i<=n;i++)
        if(v[i].size()%2!=0)
    {
        conex=0;
        break;
    }
    if(conex==1)
    {
        node=1;
        do
        {
            Eu(node);
            node=st.top();
            cout<<node<<" ";
            st.pop();
        }while(!st.empty());
    }
    else
        cout<<-1;
    return 0;
}