Cod sursa(job #3280407)

Utilizator NastureNasture Anca Nasture Data 26 februarie 2025 13:51:27
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.19 kb
#include <fstream>
#include<vector>
#include<queue>

using namespace std;

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

struct ura{
    int nod, muchie;
}aux;
vector <ura> lista[100001];

queue <int> coada;

int sel[500001],grad[100001];

void ciclueulerian(int nod)
{
    while(!lista[nod].empty())
    {
        ura aux=lista[nod].back();
        lista[nod].pop_back();
        int curent=aux.nod;
        if(sel[aux.muchie]==0)
        {
            sel[aux.muchie]=1;
            ciclueulerian(aux.nod);
        }
    }
    coada.push(nod);
}

int main()
{
    int n,m,n1,n2;
    cin>>n>>m;
    int ok=1;
    for(int i=1;i<=m;i++)
    {
        cin>>n1>>n2;
        grad[n1]++;
        grad[n2]++;
        aux.nod=n2;
        aux.muchie=i;
        lista[n1].push_back(aux);
        aux.nod=n1;
        lista[n2].push_back(aux);
    }
    ok=1;
    for(int i=1;i<=n;i++)
        if(grad[i]%2==1)
            ok=0;
    if(ok==0)
        cout<<"-1";
    else
    {
        ciclueulerian(1);
        while(!coada.empty())
        {
            cout<<coada.front()<<" ";
            coada.pop();
        }
    }
    return 0;
}